2012-08-13 4 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

그래서 collisionCheck 함수는 어떻게됩니까? 뭔가가 거기에 정의되지 않은 것을 액세스하려고합니다. –

+0

이 기능은 기본적으로 적과 총알 배열을 통과하여 그 사이의 충돌을 확인합니다. eventListener를 제거한 후에도 충돌 함수가 왜 호출 될지 모르겠습니다. – oliboon

+0

언제 이벤트 처리기를 추가합니까? 한 번만 추가됩니까? checkCollision에없는 항목에 액세스하지 않는지 확인하십시오. –

답변

0

문제는 내가 collisionCheck에 여러 개의 루프를 가지고 있으며 removePlayer를 호출하는 루프가 마지막 것이 아니 어서 리스너를 제거하더라도 계속 진행될 것이라는 점입니다. removePlayer() 다음에 리턴을 추가하면 문제가 해결되었습니다.

관련 문제