Показать сообщение отдельно
Старый 02.03.2012, 13:22
Fintch вне форума Посмотреть профиль Отправить личное сообщение для Fintch Найти все сообщения от Fintch
  № 1  
Ответить с цитированием
Fintch
 
Аватар для Fintch

Регистрация: Mar 2009
Сообщений: 51
Question Проблемы с 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 задаются не верно.

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