2014-12-11 4 views
0

사용자 입력에 따라 동적으로 변경되는 스프라이트 배열이있는 상황이 있습니다. 그리고 나는 하나의 객체와의 충돌을 위해 이들 각각을 테스트해야합니다. 유일한 문제는 'bridgeSpriteArr'값이 컴파일시 null이 아니어야한다고 생각합니다. 아직 우리는 사용자 입력에 따라 컴파일시 배열에 얼마나 많은 'bridgeSprite'가 있는지 전혀 모릅니다. 아이디어가 있으십니까?아직 생성되지 않은 개체에 대해 HitTestObject를 만드는 방법은 무엇입니까?

  bridgeSpriteArr[i] = bridgeSprite 
      Main.getStage().addChild(bridgeSprite); 

      Main.getStage().addEventListener(Event.ENTER_FRAME, 
      function objectCollision(e:Event):void 
      { 
       if (object1.hitTestObject(object2)) 
       { 
        trace("hit object"); 
       } 
       else 
       { 
        trace("miss object"); 
       } 
      }) 

      Main.getStage().addEventListener(Event.ENTER_FRAME, 
      function bridgeCollision(e:Event):void 
      { 
       if (object1.hitTestObject(bridgeSpriteArr[i])) 
       { 
        trace("hit bridge"); 
       } 
       else 
       { 
        trace("miss bridge"); 
       } 
      }) 
+0

무엇이'bridgeSpriteArr [i] = bridgeSprite'를 의미합니까? 'bridgeSpriteArr [i]'는 bridgeSpriteArr 배열의 요소 인 것처럼 보이지만 루프 외부에 나타납니다 ...'bridgeSprite' 변수는 무엇입니까? 코드의 관련 부분을 보여주십시오. – helloflash

+0

@helloflash 분명히이 사람은 AS3 배열에 적합하지 않습니다. 표시된 코드가 경계가없는 루프에 있고 예상 할 수있는 코드를 결정하는 방법을 모르기를 기대합니다. – Vesper

답변

0

Actionscript 3 배열은 동적이므로, 컴파일 할 때 얼마나 많은 객체가 있는지 알 필요가 없습니다. 대신 배열을 관리하려면 Array 클래스 기능을 사용하십시오. 당신이 배열에 객체를 추가하려면 라인 bridgeSpriteArr[i] = bridgeSprite 함께 교체해야합니다, 그래서 당신이 push() 방법을 사용, 말이 하나

bridgeSpriteArr.push(bridgeSprite); 

도 있습니다 당신이 있는지 확인하는 데 사용할 수있는 length 특성 배열의 항목 수 및 배열에있는 항목 수를 나타냅니다. 이의 코드를 포장하여 배열의 각 항목에 대한 몇 가지 코드를 실행할 수 있습니다

for (var i:int=0;i<someArray.length;i++) { 
    // current item is someArray[i] 
    doSomethingWith(someArray[i]); 
} 

당신은 더 참조 할 수 manual on Array class을 읽어야합니다.