我有个小问题。我在做一个简单的棋盘游戏。用户有可能与人工智能游戏。效果很好。游戏规则规定,如果有人掷骰子并制造1或4,他可以再玩一次。所以我做了一个for循环。它也很管用。AI播放的次数与它所需要的一样多,然后允许P1播放。我的问题是,所有的动画为移动的典当同时发生。例句:艾回合: 4。再玩: 1。再玩: 5。玩家回合。4、1、5的动画同时播放(看上去很奇怪)。我想在AI第一次投球和下一次投掷之间延迟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
}
}
}
}我希望有人能帮我:)谢谢。
发布于 2015-01-12 08:12:13
你有很多选择。例如:您可以在动画的时间线中添加2秒,并侦听动画结束。或者在每一步之后删除for循环并启动超时。如下所示:编写一个为当前步骤做出决定的方法:
function MakeDecision()
{
switch( state ):
case( state1):doSomething1()
case( state2 ):doSomething2()
}哪里
function doSomething1()
{
..your game code
startTimer for 2s , and call MakeDecision()
}或者,您可以创建一个游戏循环,它将在正常时间调用MakeDecision,并且游戏将仅由状态控制。
https://stackoverflow.com/questions/27897149
复制相似问题