它应该是一个节奏游戏,当mc在舞台上时,布尔值不断地从真实切换到另一个,你必须在正确的时间捕捉它。但我一直收到错误......
double
给我:
1502 脚本的执行时间超过15秒。
答案 0 :(得分:1)
while (theBeat)
是一个无限循环,因为theBeat
永远不会从循环内部设置为null
。无尽循环冻结Flash Player。与评论中已经提到的DodgerThud和VC.One一样,您需要随时间评估条件,例如使用ENTER_FRAME
或Timer
,而不是单个循环。
示例:
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();