2013-09-02 6 views

답변

0

교차로를 확인해야합니다. 히트 테스트 (HitTesting)라고 불리우며이를 해결할 수있는 몇 가지 방법이 있습니다. 하지만 먼저 이벤트가 아닙니다. 모든 프레임에서 교차로를 확인해야합니다. 먼저 Event.ENTER_FRAME 리스너를 새로 만들어야합니다.

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    //Your code will go here 
} 

둘째로, 우리는 객체의 boudary 직사각형의 교차를 검사합니다. sqare 또는 rectangular 영화 클립이 있다면 괜찮습니다. MC가 더 복잡한 경우 (예 : 두 개의 원)이 교차로를 가져 오는 다른 방법을 사용해야합니다.

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    if(MC1.getRect(this).intersects(MC2.getRect(this))) 
    { 
     //Two movieclips are intersecting 
    } 
} 

셋째, 한 당신의 MC가 교차 될 때이 조건이만큼 사실 일 것입니다, 우리는 우리가 이미 우리가하고 싶었던 일을 한 적이있는 경우에 저희에게 말할 것이다 플래그를 정의해야합니다.

var alreadyHandled:Boolean = false; 

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    if(MC1.getRect(this).intersects(MC2.getRect(this))) 
    { 
     if(!alreadyHandled) 
     { 
      doSomething(); 
      alreadyHandled = true; 
     } 
    } 
    else 
    { 
     //When our movieclips are apart again, we reset our helping variable 
     alreadyHandled = false; 
    } 
} 

function doSomething():void 
{ 
    //We do what we want to do if our MCs are intersecting 
} 

무언가를 연속적으로하고 싶다면 무비 클립이 교차 할 때 도움이되는 것을 무시하면됩니다.

그런데 변수 이름을 소문자로 시작하는 것이 좋습니다. AS3에서는 클래스와 인터페이스 만 대문자로 시작하는 이름을 사용합니다.

+0

감사합니다. 새로운 as3 파일에서 모든 작업이 훌륭하게 작동합니다. 하지만 이것을 클래스 문서에 사용하십시오 내가 사용할 때 addEventListener (Event.ENTER_FRAME, onEnterFrame); 기능 onEnterFrame과 (예 : 이벤트) : 무효 { 경우 (MC1.getRect (이) .intersects (MC2.getRect (이))) { 추적 ("교차") } } 여기에 온다 오류 : > Erron # 1034 : 의 flash.display.DisplayObject에 global @ 23b3a0d1 유형을 변환 할 수 없습니다. 아마도 어디에서 문제가 있었는지 알고 계셨습니까? – user2654186

+0

코드를 추가하십시오. 영화 클립은 어디에서 시작 되었습니까? 그들은 맞춤 수업을 가지고 있습니까? – KumoKairo

0

감사합니다. 새로운 as3 파일에서 모든 작업이 훌륭하게 작동합니다. 하지만 난 아마도 당신은 문제가있는 곳입니다 알려져

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void 
{ 
    if(MC1.getRect(this).intersects(MC2.getRect(this))) 
    { 
     trace("intersects") 
    } 
} 

Erron#1034: cannot convert type [email protected] on flash.display.DisplayObject.

을 사용하면 클래스의 문서 에서 이것을 사용할 필요가?