首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于定时器和循环的AS3

关于定时器和循环的AS3
EN

Stack Overflow用户
提问于 2015-01-12 07:27:26
回答 1查看 419关注 0票数 0

我有个小问题。我在做一个简单的棋盘游戏。用户有可能与人工智能游戏。效果很好。游戏规则规定,如果有人掷骰子并制造1或4,他可以再玩一次。所以我做了一个for循环。它也很管用。AI播放的次数与它所需要的一样多,然后允许P1播放。我的问题是,所有的动画为移动的典当同时发生。例句:艾回合: 4。再玩: 1。再玩: 5。玩家回合。4、1、5的动画同时播放(看上去很奇怪)。我想在AI第一次投球和下一次投掷之间延迟2秒,这样动画就有时间播放了。我读到我应该使用timersetInterval,但我不知道如何将它放在循环中。下面是我的代码的示例版本(如果有帮助的话):

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

代码语言:javascript
复制
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
            }
        }
    }
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-12 08:12:13

你有很多选择。例如:您可以在动画的时间线中添加2秒,并侦听动画结束。或者在每一步之后删除for循环并启动超时。如下所示:编写一个为当前步骤做出决定的方法:

代码语言:javascript
复制
function MakeDecision()
{
switch( state ):
case( state1):doSomething1()
case( state2 ):doSomething2()
}

哪里

代码语言:javascript
复制
function doSomething1()
{
..your game code
startTimer for 2s , and call MakeDecision()
}

或者,您可以创建一个游戏循环,它将在正常时间调用MakeDecision,并且游戏将仅由状态控制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27897149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档