2017-06-08 75 views
1

我做了一個飛揚的小鳥遊戲,並有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幀(這裏代碼可能是),你添加另一個框架監聽器,所以現在你的函數每幀執行兩次(每個事件偵聽器一次)。確保只添加一次事件監聽器:

var initialized:Boolean; 

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

它看起來像你增加鳥的引力不僅若不是死的,但如果它是。它位於條件之外。刪除增加你的條件之外的重力線(在該節選中的第16行)