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.Leftpropertyがアニメーション化されたログと一致するか、そうでなければ溺れる場合に、カエルが生き残ることを望んでいます。

どんな提案でも大歓迎です(しかし、私は初心者であることを忘れないでください)

あまり説明されていない質問でごめんなさい:)

ありがとう、よろしくお願いします

Lodal

4

1 に答える 1

0

プロパティをアニメーション化しているだけなのでCanvas.Left、いつでも をセットアップしてDispatcherTimer読み取ることができます (Canvas.GetLeftまたはCanvas.GetTop)。

これは私だけかもしれませんが、概念的には、WPF アニメーションは画面遷移などのような短いスパート用であり、ゲーム アニメーション全体を処理するためのものではありません。それがあなたの目的である場合は、アニメーションを自分で処理した方がよいでしょう ( を設定し、DispatcherTimerティックごとにゲームの状態を更新します)。

于 2013-02-06T13:48:51.360 に答える