このプログラミングゲームを参考に、現在制作中です。
Run
次のようなもので構成されるメソッドを持つクラス ライブラリ (dll) があります。
public class MyRobot : Robot
{
public void Run(}
{
while (true)
{
Ahead(200); //moves the bot 200pixels
TurnLeft(90); //turns the bot by 90deg
}
}
}
これらのメソッド ( から継承Robot
) では、システムは WPF を使用して (BeginAnimation
または を使用してDispatcherTimer
) ロボットをアニメートします。
さて、問題は、現在のメソッドを完了する前に戻る (つまり、次のメソッドに移動する) メソッドがないことです。これは、アニメーションが一緒に行われ、無限ループ (上の 1 つ)、それは特に良くありません。
私の質問は、アニメーションを完了する前にメソッドが戻らないようにする最善の方法は何ですか?
私は現在、アクションの実行が開始されたときにフラグが付けられるクラス ( ) を持っておりbool
、Robot
その後isActionRunning
、アニメーション コールバックで にtrue
変更されます ( を使用する場合はイベントを使用します)。false
Completed
BeginAnimation
各メソッドの最後 (呼び出し後BeginAnimation
) に、次のループを配置しました。
while (isActionRunning)
{
Thread.Sleep(200); //so that the thread sleeps for 200ms and then checks again if the animation is still running
}
これは、アニメーションが終了する前にメソッドが戻らないようにするためです。
しかし、これはこれを行う正しい方法ではないと感じています。
これを達成するための最善の方法を教えてもらえますか?