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