2012-08-02 4 views
0

좋아 그러나 hitTest 객체와 배열의 값, I는 다음과 같습니다 내 메인 클래스의 배열을 가지고 :테스트

objectArray:Array = [ ]; 

나는 동전, 원수, 마음 등 같은 다른 항목을 만드는 세 가지 기능을 가지고 추가 된 각 항목은 objectArray으로 푸시됩니다.

private function checkCollisions() :void{ 
    var bullet:MovieClip; 
    for (var j:int = 0; j < objectArray.length; j++){ 
     object = objectArray[j]; 
     for(var i:int = 0; i < bulletArray.length; i++){ 
      bullet = bulletArray[i]; 
      if (objectArray[j].hitTestPoint(bullet.x, bullet.y, true)) { 
       container.removeChild(bullet); 
       bulletArray.splice(i,1); 

       if (objectArray[j] == Enemy[j]){ 
        container.removeChild(objectArray[j]); 
        objectArray.splice(j,1); 
        trace("enemy hit"); 
       } 
      } 
     } 
    } 
} 

문제는이 부분에서 오는 :

if (objectArray[j] == Enemy[j]){ \\problem 
    container.removeChild(objectArray[j]); 
    objectArray.splice(j,1); 
    trace("enemy hit"); 
} 

내가 객체를 테스트 할 수있는 방법을 이해하려고 노력 계속 나는 이러한 개체 중 하나에 내 총알을 hittests이 함수를 작성하는 것을 시도하고있다 그것은 "적"과 같은 특정 값에 대해 히트 테스팅되어 어떤 종류의 물체가 맞았는지에 따라 다른 결과를 낼 수 있습니다. 시도한 테스트 조합이 무엇이든 관계없이 응답 할 수는 없습니다. 결과적으로 objectArray[j]을 추적하면 [object Enemy]가 생성됩니다. 배열 값을 테스트하는 다른 방법이 있습니까?

답변

2

objectArray[j]의 개체가 Enemy 개체인지 테스트하려는 것으로 들립니다. 당신은 is 연산자를 사용하여이 작업을 수행 할 수 있습니다

또한

if (objectArray[j] is Enemy) 
{ 
    container.removeChild(objectArray[j]); 
    trace ("enemy hit"); 
} 

편집, 당신은 반복 할 수 있습니다 총알/객체 배열의 역순으로, 당신은 잠재적으로 배열과에서 항목을 삭제하기 때문에 당신은 그것을 반복합니다.

for (var j:int = objectArray.length -1; j >= 0; j--){ 
// then do the same with the bullet array 
+0

매력처럼 작동했습니다. 감사합니다! –