如何处理动画达到某一点
本文关键字:一点 动画 何处理 处理 | 更新日期: 2023-09-27 17:57:52
我对WPF有点陌生,刚开始研究动画,为了好玩,我开始创建老式游戏《青蛙》(一款青蛙必须穿过河流/道路,同时不会被汽车等撞到的游戏)。
我为在河里穿过屏幕的木头制作了动画:
<Canvas>
<Rectangle Name="shape_WaterBackground" Fill="#1E90FF" Height="20" Width="260" Canvas.Top="240"/>
<Rectangle Name="shape_Lumber" Width="40" Canvas.Top="240" Fill="Brown" Height="16" Margin="0,2,0,0" />
<Image Name="Froggy" Height="20" Width="20" Canvas.Top="300" Canvas.Left="120" Source="Froggy.jpg" />
</Canvas>
这个特殊动画的代码:
DoubleAnimation Animate_Lumber_Movement = new DoubleAnimation(-40, 280, TimeSpan.Parse("0:0:7"));
Animate_Lumber_Movement.RepeatBehavior = RepeatBehavior.Forever;
shape_Lumber.BeginAnimation(Canvas.LeftProperty, Animate_Lumber_Movement);
现在我的问题是,当日志到达某个点时,我该如何处理。原因是(正如你可能已经猜到的),我想知道如何在动画中途(动画中的不同点或时间,而不是静态)执行动作,而不停止动画。
这与我在这里描述的问题有些相同:如何确定动画精灵何时达到一个点?,但是对于C#WPF。
作为上面代码中的一个例子,如果青蛙跳向河流和画布,我希望它能活下来。Leftproperty与动画日志匹配,否则就会淹死。
任何建议都非常感谢(但请记住,我是个新手)
很抱歉没有很好地解释这个问题:)
感谢
Lodal
由于您只是在为Canvas.Left
属性设置动画,所以您总是可以设置一个DispatcherTimer
并读取它(Canvas.GetLeft
或Canvas.GetTop
)。
虽然,也许这只是我自己,但从概念上讲,WPF动画更多的是用于短时间的冲刺,有点像屏幕过渡之类的——而不是真正用于处理整个游戏动画。如果这是你的目标,你最好自己处理动画(设置一个DispatcherTimer
,然后在每个勾选时更新你的游戏状态)。