2016-12-19 1 views
0

두 개의 캔버스 요소가 서로의 계층에 겹쳐 있습니다. 상단 캔버스는 UI 용이며 createjs 프레임 워크를 사용하여 마법을 만듭니다.자바 스크립트 이벤트에 대한 CreateJS 이벤트

다른 캔버스 요소는 바빌론 js 프레임 워크를 기반으로 일부 3D 마술을 그리는 데 사용됩니다.

제 문제는 레이어 간의 통신입니다. UI 레이어에서 마우스 이벤트를 캡처하는 보이지 않는 사각형을 만들었지 만 CreateJS MouseEvents로 들어 와서 3D 레이어로 보내려면 HTML 버전으로 변환해야합니다.

누구나 createJS 마우스 이벤트를 HTML 마우스 이벤트로 변환하는 데 필요한 코드를 아십니까?

private function initialize() 
{ 
    _blocker = new Shape(); 
    _blocker.graphics.beginFill("#000000"); 
    _blocker.graphics.drawRect(0, 0, Container3D.WIDTH, Container3D.HEIGHT); 
    _blocker.graphics.endFill(); 
    _blocker.alpha = 0.01; 

    _blocker.addDblclickEventListener(onEvent); 
    _blocker.addClickEventListener(onEvent); 
    _blocker.addMousedownEventListener(onEvent); 
    _blocker.addMouseoutEventListener(onEvent); 
    _blocker.addMouseoverEventListener(onEvent); 
    _blocker.addPressmoveEventListener(onEvent); 
    _blocker.addPressupEventListener(onEvent); 
    _blocker.addRolloutEventListener(onEvent); 
    _blocker.addRolloverEventListener(onEvent); 
} 

private function onEvent(e:MouseEvent):Void 
{ 
    /* need to convert the createjs mousevent to an html mouseevent here */ 
//var htmlMouseEvent:js.html.MouseEvent = convertToHtmlEvent(e); 
     // and dispatch it on the other canvas 
     my3DCanvas.dispatchEvent(htmlMouseEvent); 
} 

private function converToHtmlEvent(evToConvert):js.html.MouseEvent 
{ 
    // do magic here 
} 

감사합니다 : (더 JQuery와주세요) 여기

는 haxe 코드에서 아이디어 (정말로 중요한 적어도 절)입니다.

답변

0

CreateJS 이벤트에는 이벤트를 트리거 한 네이티브 이벤트에 대한 참조가 들어 있습니다. http://createjs.com/docs/easeljs/classes/MouseEvent.html#property_nativeEvent

희망하는 데 도움이 :

여기
private function onEvent(e:MouseEvent):Void 
{ 
    /* need to convert the createjs mousevent to an html mouseevent here */ 
//var htmlMouseEvent:js.html.MouseEvent = convertToHtmlEvent(e); 
     // and dispatch it on the other canvas 
     var htmlMouseEvent = e.nativeEvent; 
     my3DCanvas.dispatchEvent(htmlMouseEvent); 
} 

문서입니다!

+0

안녕하세요 Lanny, 새해로 인해 오래 지연되었습니다. 제안을 시도했지만 올바른 해결책이라고 생각합니다. 위의 해결 방법에 오류가 발생했습니다. 잡히지 않은 InvalidStateError : 'EventTarget'에서 'dispatchEvent'를 실행하지 못했습니다. 이벤트가 이미 전달되고 있습니다. nativeEvent asis를 사용하는 데 문제가 있다고 의심됩니다. nativeEvent에서 "복제본"메서드를 사용할 수 없습니다. – MikeH

+0

사용중인 이벤트 디스패처에 문제가있는 것 같습니다. – Lanny

관련 문제