2014-11-22 3 views
0

그래서 탄환과 상어 목록을 만들었습니다. 두 목록에는 정의 된 양의 각 개체가 포함되어 있습니다. 내가 hitbox에서라는 무비 클립을 작성하여 hitbox에서 정의, 나는 hitto과 총알과 충돌을 테스트 할 때 인스턴스 이름 "hitto"개체의 히트 박스를 재정의 하시겠습니까?

을 부여 무비 클립 상어 내부, 그것은 작동하지만 나는이 무작위로 출력 오류가

내 설명이 혼동 될 수 있도록 글 머리 기호 및 상어
function hitShark(e:Event):void { 
    for each (bullet in bullets) { 
     if (bullet.parent==null) { 
      bullets.splice(bullets.indexOf(bullet),1); 
     } else { 

      for each (shark in sharks) { 
       if (shark!=null&&bullet.hitTestObject(shark.hitto)) { 
        if (bullet.parent!=null) { 
         bullet.gotoAndPlay(2); 
         shark.health -= 1; 
         shark.gotoAndPlay(2); 
         //Removing while iterating over list causes errors; 
         bullets.splice(bullets.indexOf(bullet),1); 
         trace("HIT"); 
        } 
       } 
      } 
     } 
    } 
} 

사이
TypeError: Error #2007: Parameter hitTestObject must be non-null. 
    at flash.display::DisplayObject/_hitTest() 
    at flash.display::DisplayObject/hitTestObject() 
    at Missile/hitShark() 

충돌 테스트가 좀 더 설명을 올려주세요, 내가 AS3 새로운 오전.

도움이 될만한 스크린 샷? http://prntscr.com/58u6ou

답변

2

글쎄, 플래시를 사용하면 스테이지에 영화 클립을 제대로 추가하는 데 시간이 필요합니다. Event.ADDED_TO_STAGE이있는 이유는 더 잘 이해하기 위해 this article을 읽어보세요.

그러나 나는 당신이 shark와 shark.hitto가 제대로 초기화되고 무대에 앉아 있는지 확인하는 간단한 if 문으로 가기에 꽤 안전 할 것이라고 말하고 싶습니다.

if(shark && shark.hitto) { 
    // Do collisions 
} 
+0

작동 감사합니다. – Trows