2017-06-08 8 views
1

私はhahaをフラッディー鳥のゲームを作り、2つのフレームがあります。フレーム1は、再生のためのもので、2は死のためのものです。私はtrace関数を呼び出すと、問題のため何回呼び出されたかを調べることができます。私はもっ​​と私が死ぬほど、私の関数呼び出しが速くなり、gravityがさらに増えたので、私のキャラクタ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); 
} 

答えて

2

あなたが死んでフレーム1(このコードはおそらく)に戻ったとき、別のエンターフレームのリスナーを追加したので、これはおそらく起こります。これはあなたの重力を増加させます。関数はフレームごとに2回(イベントリスナーごとに1回)実行されます。 1回だけイベントリスナーを追加してください:

var initialized:Boolean; 

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

に見えますが、それはある場合。それは条件付きの外にある。

関連する問題