当动画到达某个关键帧时,我需要调用一个方法。当动画到达某个关键帧时是否可以触发事件?如果没有,是否有更好的方法在特定时间触发事件?
问问题
1241 次
1 回答
5
在事件方面,Silverlight 时间线非常有限。据我所知,仅支持 Completed 事件。但是,您可以做的是在一个故事板中拥有两个时间线,其中第二个时间线正在更新您可以观看的绑定属性。
也许是这样的:
<Storyboard>
<DoubleAnimationusingKeyFrames ... />
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="TriggerEvent">
<ObjectKeyFrame KeyTime="00:00:01" Value="True" />
<ObjectAnimationUsingKeyFrames>
</Storyboard>
然后在控件后面的代码中,定义一个名为 TriggerEvent 的 Boolean 类型的依赖项属性。当它变为 true 时,调用您的方法。
然而,另一种选择,实际上可能更好,将您的原始动画分成两个平行的时间线,并将 Completed 事件处理程序连接到第一个时间线(您将使用它来调用您的方法),然后在第二个时间线上,使用BeginTime 属性用于同步两个动画,以便第二个动画在第一个动画完成时开始播放。
<Storyboard>
<!-- Timeline 1 -->
<DoubleAnimationusingKeyFrames Completed="MyCompletedHandler" ... />
<!-- Timeline 2 -->
<DoubleAnimationUsingKeyFrames BeginTime="00:00:01" ... />
</Storyboard>
于 2010-05-20T23:20:50.860 回答