2012-03-22 74 views
2

我想旋轉UserControl(圖像)並以編程方式調整旋轉的速度。更新故事板中旋轉的速度/持續時間

因此,首先,我已經定義了一個故事板,其旋轉的車輪:

<Storyboard x:Name="wheelRotation"> 
      <DoubleAnimation 
       x:Name="leftRotation" 
       Storyboard.TargetName="leftWheel" 
       Storyboard.TargetProperty="(leftWheel.RenderTransform).(RotateTransform.Angle)" 
       From="360" To="0" Duration="0:0:2" 
       AutoReverse="False" 
       RepeatBehavior="Forever"> 
      </DoubleAnimation> 
</Storyboard> 

接下來,我想以編程方式更新旋轉的持續時間,調整「速度」每2秒:

leftRotation.Duration = speed1; 

乍一看,這似乎工作,特別是如果速度的變化很小。但是如果速度增加,在每次更新時,車輪似乎都會調整一些角度,導致「打嗝」。 (如果速度增加,例如在2分鐘的時間內從2s增加到4s,則車輪在末端似乎前進1-2度,如果時間減少,則在每次更新時車輪稍微旋轉一點)

我也嘗試使用固定持續時間來實現行爲並更新SpeedRatio,但這也沒有幫助,這些調整仍然發生。

我對Silverlight/Windows Phone頗爲陌生,所以我沒有更深入的瞭解它是如何工作的,我很感激它,如果有人能給我一個提示如何解決它。謝謝...

+0

你能解釋你正在做什麼嗎?我還沒有嘗試改變動畫「在飛行中」,所以沒有這方面的經驗。你能解釋你在做什麼(爲什麼動畫需要像運行時那樣改變)? – 2012-03-22 21:30:35

回答

0

我不確定在運行時更改Storyboard/DoubleAnimation的屬性是不是一個好主意。我將刪除RepeatBehavior="Forever",以便動畫觸發一次,而不是處理Storyboard.Completed事件以在每次停止時再次開始動畫。然後您可以在重新開始之前調整持續時間。

+0

謝謝。儘管我在完成事件中所做的只是調用'wheelRotation.Begin();' – 2mac 2012-03-23 11:01:20

相關問題