2016-12-19 2 views
0

私は2つのキャンバス要素が互いに重ねられたontopを持っています。トップキャンバスはUIのためのもので、createjsフレームワークを使用してその魔法を実行します。JavascriptイベントへのCreateJSイベント

他のキャンバス要素は、いくつかの3Dマジックを描くために、babylon jsフレームワークに基づいています。

私の問題はレイヤー間の通信です。私は、マウスイベントをキャプチャするUIレイヤーに不可視の矩形を作成しましたが、CreateJS MouseEventsとして入ってきました。これらを3DレイヤーにディスパッチするにはHTMLバージョンに変換する必要があります。

誰かがHTMLマウスイベントにcreateJSマウスイベントを変換するために必要なコードを知っていますか? (ノーjqueryのしてください)ここ

は、haXeのコード(本当に重要少なくとも部分)でアイデアです:

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 
} 

感謝。

答えて

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、新しい年のために長い遅延のため申し訳ありません。 私はあなたの提案を試しましたが、正しい方法だと思っていますが、上記の解決策にはエラーが発生します: Uncaught InvalidStateError: 'EventTarget'で 'dispatchEvent'を実行できませんでした:イベントは既にディスパッチされています nativeEvent asisの使用に問題があると思われます... nativeEventで利用できる「クローン」メソッドが表示されません。 – MikeH

+0

使用しているイベントディスパッチャの問題のようです。 – Lanny