0

我对 WPF 有点陌生,刚开始研究动画,只是为了好玩,我开始创建老式游戏 Frogger(青蛙必须穿过河流/道路而不会被汽车撞到等的游戏)。

我为河流中穿过屏幕的木头制作了动画:

<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。

作为上面代码中的一个示例,如果青蛙跳向河流并且它的 Canvas.Left 属性与动画日志匹配,我希望青蛙能够幸存下来,否则就会淹死。

非常感谢任何建议(但请记住,我是新手)

对不起,这个问题解释得不太清楚:)

感谢你并致以真诚的问候

洛达尔

4

1 回答 1

0

由于您只是为Canvas.Left属性设置动画,因此您始终可以设置 aDispatcherTimer并阅读它(Canvas.GetLeftCanvas.GetTop)。

Although, maybe this is just me, but conceptually, WPF animations are more for short spurts, sort of like screen transitions and the like - not really for handling entire game animations. If that's your aim, you're probably just better off handling the animation yourself (set up a DispatcherTimer, and then on each tick you would update your game state).

于 2013-02-06T13:48:51.360 回答