2012-08-13 74 views
1

我的主遊戲循環出現問題。當玩家被銷燬時,我移除遊戲循環的eventListener。但是,我碰到了collisionCheck函數的一個錯誤,即一個術語未定義。即使collisionCheck是gameLoop的一部分,並且eventListener已被刪除。術語未定義

if(planeHP <= 0){ 
    removePlayer(); 
} 

public function removePlayer(){ 
    removeEventListener(Event.ENTER_FRAME, moveGameObject); 
    trace("removed"); 
} 

public function moveGameObject(event:Event){ 
    collisionCheck(); 
} 

我可以在輸出窗口中的錯誤之前看到「刪除」痕跡。該錯誤始終來自collisionCheck函數。

感謝您的幫助。

+0

那麼碰撞檢查功能會發生什麼?有些東西試圖訪問那裏沒有定義的東西。 – 2012-08-13 21:06:22

+0

該功能基本上通過敵人和子彈陣列並驗證它們之間的碰撞。我不知道爲什麼碰撞函數會在我刪除eventListener後被調用。 – oliboon 2012-08-13 21:14:35

+0

何時以及如何添加事件處理程序?它只添加一次嗎?確保你沒有訪問checkCollision中不存在的任何東西。 – 2012-08-13 21:18:58

回答

0

問題是我在collisionCheck中有多個循環,調用removePlayer的循環不是最後一個,所以即使我刪除了偵聽器,它仍會繼續。只需在removePlayer()之後添加一個返回值並解決了問題。