2016-12-19 4 views
0

У меня есть два элемента холста, многослойные друг на друга. Верхний холст предназначен для пользовательского интерфейса и использует фреймворк 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 
} 

Спасибо.

ответ

0

События CreateJS содержат ссылку на собственные события, которые вызвали их.

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); 
} 

Вот документация: http://createjs.com/docs/easeljs/classes/MouseEvent.html#property_nativeEvent

Надежда, что помогает!

+0

Hi Lanny, Извините за долгую задержку из-за нового года. Я пробовал ваше предложение, и я думаю, что это на правильном пути, однако я получаю сообщение об ошибке с вышеупомянутым решением: Uncaught InvalidStateError: Не удалось выполнить 'dispatchEvent' в 'EventTarget': событие уже отправлено Я подозреваю, что это проблема с использованием nativeEvent asis ... Я не вижу метод «клонирования», доступный на nativeEvent ... – MikeH

+0

Это звучит как проблема с диспетчером событий, который вы используете. – Lanny

Смежные вопросы