Actionscript 3 函数被调用得更快

Actionscript 3 函数被调用得更快,actionscript-3,flash,Actionscript 3,Flash,我做了一个flappy bird游戏,共有2帧。帧1用于播放,而2用于死亡。我对一个函数进行了跟踪调用,以查看由于某个问题调用了多少次。我发现我死得越多,我的函数调用就越快,重力增加了更多倍,因此,我的角色flappy每次死后下降得更快。请帮助。代码如下: var calls = 0; flappy.addEventListener(Event.ENTER_FRAME, fl_gravity); function fl_gravity(event: Event): void { call

我做了一个flappy bird游戏,共有2帧。帧
1
用于播放,而
2
用于死亡。我对一个函数进行了
跟踪
调用,以查看由于某个问题调用了多少次。我发现我死得越多,我的函数调用就越快,
重力
增加了更多倍,因此,我的角色
flappy
每次死后下降得更快。请帮助。代码如下:

var calls = 0;
flappy.addEventListener(Event.ENTER_FRAME, fl_gravity);
function fl_gravity(event: Event): void {
    calls++;
    if (dead) {
        if (flappy.hitTestObject(ground)) {
            gravity = 0;
        } else {
            gravity += 0.5;
        }
        upPressed = false;
    } else {
        flappy.x += 2.5;
    }
    flappy.y += gravity;
    gravity += 0.5;
    trace(calls);
}

看起来你在增加鸟的重力,不仅是在它没有死的情况下,而且是在它死的情况下。它位于条件之外。删除在条件之外增加重力的行(该摘录中的第16行)

这可能是因为当您死亡并返回到第1帧(代码可能在这里)时,您添加了另一个enterframe侦听器,因此现在您的函数每帧执行两次(每个事件侦听器一次)。确保只添加一次事件侦听器:

var initialized:Boolean;

if(!initialized)
{
    initialized = true;
    flappy.addEventListener(Event.ENTER_FRAME, fl_gravity);
}