Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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 задаются не верно.

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
alternativa3d , localToGlobal , MouseEvent3D
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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