如何处理动画达到某一点

本文关键字:一点 动画 何处理 处理 | 更新日期: 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.GetLeftCanvas.GetTop)。

虽然,也许这只是我自己,但从概念上讲,WPF动画更多的是用于短时间的冲刺,有点像屏幕过渡之类的——而不是真正用于处理整个游戏动画。如果这是你的目标,你最好自己处理动画(设置一个DispatcherTimer,然后在每个勾选时更新你的游戏状态)。