У меня есть небольшой вопрос. Я делаю простую настольную игру. Пользователь имеет возможность играть против ИИ. Это работает нормально. Правила игры гласят, что если кто-то бросает кости и выпадает 1 или 4, он может играть снова. Поэтому я сделал цикл for. Это тоже работает. ИИ играет столько раз, сколько ему нужно, а затем позволяет играть P1. Моя проблема в том, что все анимации движений пешки происходят одновременно. Пример: Ход ИИ: 4. Играет снова: 1. Играет снова: 5. Ход игрока. Анимации для 4, 1 и 5 воспроизводятся одновременно (выглядит странно). Я бы хотел 2-секундную задержку между первым броском от ИИ и следующим, чтобы анимация успела разыграться. Я читал, что я должен использовать timer
или 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
}
}
}
}
Я надеюсь, что кто-то может мне помочь :) Спасибо.