Greetings,XAML Heartbeat動畫 - 如何確保心跳至少兩次
我想直觀顯示後臺進程何時工作。此過程每隔一段時間(例如每30秒)發生一次,可能需要10ms或1000ms +才能完成。我正在使用MVVM-Light框架,因此創建了一個數據觸發器,用於連接到心臟衰減進出的圖像上的視圖模型屬性。
我的業餘動畫技術正在工作,當過程需要一秒或更多時間,但我也希望它完成一個完整的心跳(2重複),當過程需要一段時間(< 100毫秒),否則動畫過快,你不能(視覺上)告訴過程正在工作。
問題是心臟在整個過程中應該繼續跳動,所以我不能將重複行爲設置爲2. XAML解決方案是首選,但如果需要一些代碼,我不會畏縮:)
<Image
Height="60" Width="60" Margin="0,6,6,6"
Name="Heartbeat" Source="/Resources/Heartbeat.png"
VerticalAlignment="Bottom" HorizontalAlignment="Right"
Opacity=".05" Stretch="UniformToFill">
<Image.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsHeartBeating}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Name="HeartbeatStoryboard">
<Storyboard RepeatBehavior="Forever">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.05" To="0.8" Duration="0:0:0.100">
</DoubleAnimation>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.8" To="0.05" Duration="0:0:0.300">
<DoubleAnimation.EasingFunction>
<PowerEase EasingMode="EaseOut" Power="6" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="HeartbeatStoryboard" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
如果任何人有關於如何提高心跳動畫任何提示,我很開放的建議,謝謝!
@Si:我覺得你得指定RepeatBehavior =「2倍」,並訂閱完成事件的StoryBoard,如果IsHeartBeating仍然是真的,那麼你重新啓動它。我不確定你是否在這裏使用MVVM,所以我不確定如何在第一次迭代中啓動它。 – 2010-12-14 23:45:00
謝謝Meleak,這是一個好主意。是的,我使用的是MVVM-Light,但它很容易將事件連接到代碼後面,並從視圖數據上下文中獲取視圖模型。順便說一句,請張貼這個答案,我會投它,歡呼! – si618 2010-12-15 00:20:39
沒有快樂我害怕Meleak,''事件'已完成'無法在樣式中的目標標籤上指定。使用EventSetter代替.'但它看起來像Storyboard.Completed事件不是一個RoutedEvent,所以事件設置器也不會工作:) – si618 2010-12-15 00:46:47