AS3 关于定时器和循环

AS3 About timers and loops

我有一个小问题。 我正在制作一个简单的棋盘游戏。用户可以与 AI 对战。它工作正常。游戏规则规定,如果有人掷骰子并掷出 1 或 4,他可以再玩一次。所以我做了一个for循环。它也有效。 AI 播放所需次数,然后允许 P1 播放。 我的问题是棋子移动的所有动画同时发生。 示例:AI 的回合:4。再次播放:1。再次播放:5。玩家的回合。 4 & 1 & 5 的动画同时播放(看起来很奇怪)。我希望在 AI 的第一次投掷和下一次投掷之间有 2 秒的延迟,以便动画有时间播放。 我读到我应该使用 timersetInterval 但我真的不知道将它放在我的循环中的位置和方式。如果有帮助,这是我的代码示例版本:

编辑:更新代码,感谢以下答案:

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

我希望有人能帮助我:) 谢谢

你有很多选择。例如:您可以在动画时间轴中添加 2 秒并监听动画结束。或者您删除 for 循环并在每个步骤后开始超时。是这样的: 编写一个方法来决定当前步骤:

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

哪里

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

或者你可以制作一个游戏循环,定期调用 MakeDecision 并且游戏将仅由状态控制