2014-06-05 3 views
0

나는 이것이 쉬워야한다는 것을 알고 있지만 어떻게 든 시간 이상을 소비 한 후에 그것을 이해할 수 없었습니다. 스프라이트를 확장하는 클래스에는 두 개의 무비 클립이 있습니다. 스테이지에 이벤트 리스너를 추가하면 모든 것이 잘 작동합니다. 그러나 무비 클립 중 하나에 이벤트 리스너를 추가하려고하면 이벤트가 디스패치되지 않습니다. MouseEvent가 무비 클립에 전달되지 않음

public class MyClass extends Sprite 
{ 
    private var movieclip1:MovieClip, movieclip2:MovieClip; 

    private function init(e:Event == null):void 
    { 
     movieclip1 = new MovieClip(); 
     movieclip2 = new MovieClip(); 
     //works fine, dispatches event 
     stage.addEventListener(MouseEvent.MOUSE_DOWN. mousedown); 
     //not working 
     movieclip1.addEventListener(MouseEvent.MOUSE_DOWN, mousedown); 
     addChild(movieclip1); 
     addChild(movieclip2); 
    } 
} 

는 사실 내가 영화 클립 모두가 상호 배타적 일 즉, 하나 개의 무비 클립에 마우스 이벤트가 다른 것을 방해하지 않아야합니다 - 여기가 보이는 방법이다. 어떤 포인터?

+0

stage.movieclip1.addEventListener (의 MouseEvent.MOUSE_DOWN)을 시도; 그렇지 않다면 무대 대신 이것을 시도하십시오 – subrat71

+1

오류가 발생하지 않습니까? 오류가 발생해야합니다. 이벤트를 파견하지 않는다는 것을 어떻게 알 수 있습니까? 콜백 함수가 없습니다. –

+1

이 코드는 양쪽 이벤트 리스너에서'e : Event == null'과'Error 1136' 라인에 문법 오류를 던질 것으로 기대합니다. –

답변

1

movieclip1 또는 movieclip2의 너비와 높이를 추적 할 수 있습니다. 둘 다 0이됩니다. 그래서 클릭 할 수 없습니다.

그래프 시스를 사용하여이 두 개의 mcs에서 모양을 그리고 다시 시도 할 수 있습니다.

+0

그래도이 클래스는 Sprite에서 확장됩니다.이 클래스를 주 mxml 파일에서 인스턴스화하고 SpriteVisualElement () 구성 요소를 시작하는 객체를 추가했습니다.이 플렉스 구성 요소에는 높이와 너비가 있습니다. 여전히 무비 클립의 크기를 명시 적으로 지정해야합니까? – raghav

2

빈 MovieClip 및 Sprite는 크기를 조정할 수 없으며 0,0이되며 MouseEvents를 전달할 수 없습니다.

동영상 클립에 콘텐츠가있는 경우 크기를 조절할 수 있습니다. Sprite는 2 MovieClip을 묶는 사각형 크기입니다. 그들은 버블 링 된 이벤트가 위쪽으로 이동하기 때문에 간섭하지 않을 :

영화 클립이 비어있는 경우

= 0,0 스프라이트는 두 무비 클립 사이의 이벤트에 대한 0,0

될 것입니다.

그래서 청취자는 MC1에 만 온 클릭을 청취 할 MC1에 넣어 동일하지 MC2

+0

응답을 주셔서 감사합니다.하지만 내 질문의 뒷부분에 아직 답변이 없습니다. 어떻게 하나의 이벤트가 다른 이벤트를 방해하지 않거나 하나의 무비 클립이 다른 이벤트를 알지 못하는 방식으로 두 무비 클립 모두를 처리합니다. – raghav

+0

죄송하지만 무슨 뜻인지 이해가 안됩니다. 당신이 묻고있는 것은 말이 없습니다. MovieClip1을 클릭하면 이벤트가 전달되고 MovieClip1에 놓인 리스너가 걸러집니다. 2를 클릭하면 동일한 작업이 수행됩니다. – SharpEdge

관련 문제