2011-01-21 4 views
0

개체가 어떤 개체와 충돌하는지 알 수있는 방법은 무엇입니까? ... 플래시와 충돌하는 다른 개체 (Movieclips)를 식별 할 수있는 '상자 개체'를 만들고 싶습니다. 예를 들어, '필드'(엔진 또는 세계)에 상자를 놓고 상자 안에 물건을 넣으면 상자가 어떤 종류의 물건과 충돌하고 있는지 알려주고 싶습니다. 상자가 어떤 개체와 미리 충돌할지 모르기 때문에 hitTestObject를 사용할 수 없습니다. 위의 예에서Actionscript 3에서 충돌하는 객체를 어떻게 얻을 수 있습니까?

if (Movieclip(parent). UNKNOWN_OBJECT .hitTestObject(this)) 
     trace(UNKNOWN_OBJECT.name); 

UNKNOWN_OBJECT가 반드시 동일한 데이터 형식이없는 다음과 같이

내가 달성하고자하는 것과 거친 pesudocode이다.

답변

2

모든 프레임에서 부모의 모든 하위 항목을 반복하여 충돌이 발생하는지 확인할 수 있습니다. 이것은 브 루트 포스 체크입니다. 충돌을 체크 할 수있는 많은 오브젝트가 있다면, Quadtrees 또는 그와 비슷한 것을 찾으십시오.

은 여기 "상자 개체는"충돌을 확인할 수있는 방법을 예입니다 :

// this is your ENTER_FRAME handler 
private function handleEnterFrame(evt:Event):void { 
    var p:MovieClip = parent as MovieClip; 
    if(!p){ 
     return; 
    } 
    for(var i:int = 0, len:int = p.numChildren; i < len; i++){ 
     var child:DisplayObject = p.getChildAt(i); 
     if(child != this && this.hitTestObject(child)){ 
      trace("Collides with: " + getQualifiedClassName(p.getChildAt(i))); 
     } 
    } 
} 

는 않는 모든 부모 (즉, 형제 자매) 모든 프레임의 모든 아이 노드와 충돌을 확인합니다. 충돌이 감지되면 충돌 한 항목의 클래스 이름을 추적합니다. 이 기능을보다 유용하게 사용하려면 충돌이 감지 될 때 이벤트 또는 신호를 보내면 클래스가 충돌을 "청취"할 수 있습니다.

관련 문제