0

少し質問があります。簡単なボードゲームを作っています。ユーザーは、AI と対戦する可能性があります。それは正常に動作します。ゲームのルールでは、サイコロを振って 1 か 4 が出たら、もう一度プレイできるとされています。というわけで for ループを作りました。それも機能します。AI は必要な回数だけ再生し、P1 が再生できるようにします。私の問題は、ポーンの動きのすべてのアニメーションが同時に発生することです。例: AI のターン: 4. もう一度プレイ: 1. もう一度プレイ: 5. プレイヤーのターン。4 & 1 & 5 のすべてのアニメーションが同時に再生されます (奇妙に見えます)。アニメーションが再生される時間を確保するために、AI からの最初のスローと次のスローの間に 2 秒の遅延が必要です。timeraまたは aを使用する必要があることを読みsetIntervalましたが、ループ内のどこにどのように配置するかがよくわかりません。

編集:以下の回答のおかげで、コードを更新しました:

function fnTimeOut() {
    var intervalId: uint = setTimeout(fnNextPlayer, 2000, null);
}

next.addEventListener(MouseEvent.CLICK, fnNextPlayer);
function fnNextPlayer (e:Event):void{
    if (player2.currentFrame == 2) { //AI's turn
            randDice=random(1, 6); //dice thrown (have a random function setup already)
            if (randDice==1){
                //start animation
                //move pawns
                fnTimeOut(); //restarts the function after 2secs
            }
            if (randDice==2){
                //start animation
                //move pawns
                player2.gotoAndStop(1); //starts player1's turns
                //stop loop because not 1 or 4
            }
        }
    }
}

誰かが私を助けてくれることを願っています:)ありがとう。

4

1 に答える 1

1

多くのオプションがあります。例: アニメーションのタイムラインに 2 秒追加して、アニメーションの終了を聞くことができます。または、for ループを削除し、各ステップの後にタイムアウトを開始します。このようなもの: 現在のステップの決定を行うメソッドを記述します。

function MakeDecision()
{
switch( state ):
case( state1):doSomething1()
case( state2 ):doSomething2()
}

どこ

function doSomething1()
{
..your game code
startTimer for 2s , and call MakeDecision()
}

または、定期的に MakeDecision を呼び出すゲーム ループを作成することもできます。これにより、ゲームは状態によってのみ制御されます。

于 2015-01-12T08:12:13.900 に答える