0
我有一個小問題。 我在做一個簡單的棋盤遊戲。用戶有可能對抗AI。它工作正常。遊戲規則規定,如果有人投擲骰子並製作1或4,他可以再次玩。所以我做了一個for循環。它也可以工作。 AI根據需要多次播放,然後允許P1播放。 我的問題是,所有的兵的動作動畫發生在同一時間。 示例:AI輪到:4.再次播放:1.再次播放:5.玩家輪流。所有同時播放的動畫(看起來很奇怪)。我希望AI和第一次投擲之間有2秒的延遲,以便動畫有時間播放。 我讀過我應該使用timer
或setInterval
,但我不知道在哪裏以及如何將它放置在我的循環中。這裏是我的代碼樣本版本,如果它可以幫助:AS3關於定時器和循環
編輯:更新後的代碼,這要歸功於以下答案:
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
}
}
}
}
我希望有人能幫助我:) 感謝。
首先,謝謝你的回答。我選擇使用超時方法(所以我不必重寫大量的代碼)。但是,我已經注意到了你提出的代碼,並將在我的下一個項目中使用它,因爲它看起來比我所做的要好得多:)。我正在更新我的第一篇文章,如果它可以幫助其他人! – Jeryl