Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Проблемы с MouseEvent3D.MOUSE_MOVE и object3D.localToGlobal(vector3D). (http://www.flasher.ru/forum/showthread.php?t=176113)

Fintch 02.03.2012 13:22

Проблемы с MouseEvent3D.MOUSE_MOVE и object3D.localToGlobal(vector3D).
 
Здравствуйте!

У меня возникли проблемы с MouseEvent3D.MOUSE_MOVE и object3D.localToGlobal(vector3D).
Помогите пожулуйста разобраться.

Мне необходимо реализовать перетаскивание объектов на плоскости. Из моих тестов я понял, что просто по главному контейнеру scene перетаскивать объекты не получается. Поэтому я создал плоскость, которую в дальнейшем хочу сделать невидимой.
Над плоскостью будут располагаться множество плоскостей с текстурами. Эти плоскости в не должны получать мышиные события, поэтому им я присвоил mouseEnabled = false;

То есть есть сцена, главный контейнер - scene. Есть плоскость - debugPlane для того, чтобы координаты коректно брались. Без неё не выходит.
И допустим пока 1 объект.

Далее я назначил слушатели на главный контейнер.
Код AS3:

this._scene.addEventListener(MouseEvent3D.MOUSE_DOWN, onMouse3DDown);                        
this._scene.addEventListener(MouseEvent3D.MOUSE_UP, onMouse3DUp);
this._scene.addEventListener(MouseEvent3D.MOUSE_MOVE, onMouse3DMove);

В обработчике onMouse3DDown я проверяю объект и присваиваю его в this._selectObject3D.
В обработчике onMouse3DMove я преобразовываю координаты в глобальные.

Код AS3:

(e:MouseEvent3D)
var localVector = new Vector3D( e.localX, e.localY, e.localZ);
var eventObj:Object3D = (e.target as Object3D);
this._direction = eventObj.localToGlobal(localVector);

и присваиваю this._selectObject3D.

Вроде все просто и должно работать. Но не все так просто.
Видимо мало просто перевести координаты в глобальные.

Также я заметил, что когда курсор на объекте, объект центрируется по курсору.
Но, если курсор на плоскости - объект центрируется по курсору визуально со смещением по оси z.
То есть курсор в ногах объекта. Но по оси z я не смещаю. Координаты x и y задаются не верно.

Видимо нужно как-то дополнительно коректировать координаты?
В чем могут быть ошибки?


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

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