У меня есть два элемента холста, многослойные друг на друга. Верхний холст предназначен для пользовательского интерфейса и использует фреймворк createjs для его магии.События CreateJS для Javascript
Другой элемент холста основан на структуре babylon js, чтобы нарисовать некоторую 3D-магию.
Моя проблема - связь между слоями. Я создал невидимый прямоугольник на уровне пользовательского интерфейса, который захватывает события мыши, но они входят в состав CreateJS MouseEvents, и мне нужно преобразовать их в HTML-версию для отправки на трехмерный слой.
Кто-нибудь знает, что такое код, который мне нужен, чтобы преобразовать событие мыши createJS в событие мыши HTML? (Без 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
}
Спасибо.
Hi Lanny, Извините за долгую задержку из-за нового года. Я пробовал ваше предложение, и я думаю, что это на правильном пути, однако я получаю сообщение об ошибке с вышеупомянутым решением: Uncaught InvalidStateError: Не удалось выполнить 'dispatchEvent' в 'EventTarget': событие уже отправлено Я подозреваю, что это проблема с использованием nativeEvent asis ... Я не вижу метод «клонирования», доступный на nativeEvent ... – MikeH
Это звучит как проблема с диспетчером событий, который вы используете. – Lanny