继续在as3中获得此循环的错误#1502

时间:2016-03-31 22:00:04

标签: actionscript-3 loops flash if-statement while-loop

它应该是一个节奏游戏,当mc在舞台上时,布尔值不断地从真实切换到另一个,你必须在正确的时间捕捉它。但我一直收到错误......

double

给我:

  

1502 脚本的执行时间超过15秒。

1 个答案:

答案 0 :(得分:1)

while (theBeat)是一个无限循环,因为theBeat永远不会从循环内部设置为null。无尽循环冻结Flash Player。与评论中已经提到的DodgerThud和VC.One一样,您需要随时间评估条件,例如使用ENTER_FRAMETimer,而不是单个循环。

示例:

addEventListener(Event.ENTER_FRAME, enterFrame);

function enterFrame(e:Event):void {
    if (theBeat) {
        if (theBeat.currentFrame < 5) {
            onBeat = true;
        }
        if (theBeat.currentFrame > 5) {
            onBeat = false;
        }
        trace("onBeat:", onBeat);
    }
}

当事情停止时,只需删除处理程序:

removeEventListener(Event.ENTER_FRAME, enterFrame);

您可以使用Timer每秒评估一次,如下所示:

var timer:Timer = new Timer(1000);
timer.start();
timer.addEventListener(TimerEvent.TIMER, timerHandler);

function timerHandler(e:TimerEvent):void {
    if (theBeat) {
        if (theBeat.currentFrame < 5) {
            onBeat = true;
        }
        if (theBeat.currentFrame > 5) {
            onBeat = false;
        }
        trace("onBeat:", onBeat);
        if (onBeat == true && spaceDown == true) {
            points++;
            trace("points:", points);
        }
    }
}

停止计时器:

timer.stop();