나는이 행동AS3. mouse_over 대신 다른 무비 클립 위의 MovieClip.
MC1.addEventListener (MouseEvent.MOUSE_OVER, MC1_over);
할 수있는 용도의 다른 MC 대신 마우스? 즉, MC2가 MC1을 초과하면 내 작업이 시작됩니다. 어떻게 그럴 수 있죠? 도움을 주셔서 감사합니다.
나는이 행동AS3. mouse_over 대신 다른 무비 클립 위의 MovieClip.
MC1.addEventListener (MouseEvent.MOUSE_OVER, MC1_over);
할 수있는 용도의 다른 MC 대신 마우스? 즉, MC2가 MC1을 초과하면 내 작업이 시작됩니다. 어떻게 그럴 수 있죠? 도움을 주셔서 감사합니다.
교차로를 확인해야합니다. 히트 테스트 (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에서는 클래스와 인터페이스 만 대문자로 시작하는 이름을 사용합니다.
감사합니다. 새로운 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.
을 사용하면 클래스의 문서 에서 이것을 사용할 필요가?
감사합니다. 새로운 as3 파일에서 모든 작업이 훌륭하게 작동합니다. 하지만 이것을 클래스 문서에 사용하십시오 내가 사용할 때 addEventListener (Event.ENTER_FRAME, onEnterFrame); 기능 onEnterFrame과 (예 : 이벤트) : 무효 { 경우 (MC1.getRect (이) .intersects (MC2.getRect (이))) { 추적 ("교차") } } 여기에 온다 오류 : > Erron # 1034 : 의 flash.display.DisplayObject에 global @ 23b3a0d1 유형을 변환 할 수 없습니다. 아마도 어디에서 문제가 있었는지 알고 계셨습니까? – user2654186
코드를 추가하십시오. 영화 클립은 어디에서 시작 되었습니까? 그들은 맞춤 수업을 가지고 있습니까? – KumoKairo