更快地调用函数

Function being called faster

我做了一个 flappy bird 游戏,有 2 帧。 frame 1是玩的,2是死的。我对一个函数进行了 trace 调用,以查看它由于某个问题被调用了多少次。我发现我死得越多,我的函数调用越快,gravity 增加了更多次,因此,每次 dies.Please 帮助时,我的角色 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);
}