Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Диспетчирезация события MouseEvent3D.MOUSE_UP. (http://www.flasher.ru/forum/showthread.php?t=180240)

Fintch 30.05.2012 14:20

Диспетчирезация события MouseEvent3D.MOUSE_UP.
 
Здравствуйте!

Возникла следующая проблема:
Я делаю перетаскивание изображения текстуры с панели на вьюпорт.
По плану, я должен определить, что изображение отпущено на вьюпорте и определить на каком объекте.

Изображению выставляю mouseEnable = false; и mouseChildren = false;
Затем подписываюсь stage.addEventListener(MouseEvent.MOUSE_UP, textureInViewHandler);
Проверяю if (e.target is View) то удаляю изображение и слушатель.
Также подписываюсь на scene.addEventListener(MouseEvent3D.MOUSE_UP, checkTextureInViewHandler);
И пока просто делаю trace(e.target);

Если перетаскиваем текстуру она благополучно удаляется, но на выходе ничего..
Если просто щелкаем по вьюпорту получаем [object3D null];

Почему событие не доходит до сцены?
Я пробовал еще лучами делать, но там есть ряд проблем с точностью пересечений..

Srednas 01.06.2012 08:03

Попробуйте, как вариант, на 3д-объекте подписаться не на UP, а на MouseEvent3D.MOUSE_MOVE
что-то вроде:
Код AS3:

scene.addEventListener(MouseEvent3D.MOUSE_MOVE, checkTextureInViewHandler);

Как только событие произойдет, снимите слушатель:
Код AS3:

                private function checkTextureInViewHandler(e:MouseEvent3D):void{
                                scene.removeEventListener(MouseEvent3D.MOUSE_MOVE, checkTextureInViewHandler);
                                trace(e.target);
                }


Fintch 01.06.2012 11:19

Спасибо за совет) Я уже разобрался. Сделал вот так:
Код AS3:

private var _lastEtarget:Object3D = null;
 
scene.addEventListener(MouseEvent3D.MOUSE_MOVE, sceneMouseMoveHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseMoveHandler);
 
private function sceneMouseMoveHandler(e:MouseEvent3D):void {
 
        _lastETarget = e.target as Object3D;
 
}
 
private function stageMouseMoveHandler(e:MouseEvent3D):void {
 
        trace(_lastETarget);
 
}



Часовой пояс GMT +4, время: 17:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.