Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Alternativa3D 8 AS3 и MouseEvent (http://www.flasher.ru/forum/showthread.php?t=162713)

savva 03.08.2011 16:50

Alternativa3D 8 AS3 и MouseEvent
 
Здравствуйте.
Реализую метод Drag&Drop.Проблема в следующем.

Когда работаешь просто во флэше без 3D. Объект отрисовывается на плоскости и чтобы его переместить мышью методом Drag&Drop достаточно присвоить значения x,y мыши объекту.

В случае с 3D когда присваиваешь объекту он в локальных координатах перемещается(То бишь там 3 координаты и расположены они как в 3DMax),а мне нужно чтобы он перемещался как в случае с 2D.А чтобы например передвинуть в глубь поворачиваешь камеру и двигаешь.
Как это сделать?
Сейчас сделано следующее:
Код AS3:

private function OnMouseDown3D(e:MouseEvent3D):void
                {
                        trace("mousedown3d")
                                stage.removeEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
                                stage.removeEventListener(Event.ENTER_FRAME, OnMouseMove);
                                object = e.target as Mesh;
                                stage.addEventListener(Event.ENTER_FRAME, OnMouseMove3D);
                }
                //Обработка события мыши
                private function OnMouseMove3D(e:Event):void
                {
                                trace("mousedmove3d")
                        controller.stopMouseLook();
                        object.x = scene.mouseX;
                        object.y = scene.mouseY;
                }
                //Обработка события мыши
                private function OnMouseUp3D(e:MouseEvent3D):void
                {
                                trace("mouseup3d")
                        stage.removeEventListener(Event.ENTER_FRAME, OnMouseMove3D);
                        stage.addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
                        controller.startMouseLook();
                }


Wolsh 03.08.2011 17:00

Вопрос действительно связан с Alternativa3D 8?

savva 03.08.2011 17:08

Да.
Код:

        import alternativa.engine3d.core.MouseEvent3D;
Добавлено через 50 часов 49 минут
Товарищи не у кого нет идей по этому поводу?

Есть идея вычислить расстояние до плоскости отображения 2D объектов от камеры и вычислить расстояние от камеры до плоскости расположения 3D объекта. потом делать таким образом

У объекта работаем с плоскостью XZ (y в 3D Max вроде глубину означает).
Соответственно у объекта X = X мышки а Y = -Z объекта т.к. во флэш как я понимаю Y направлен из верхнего левого угла вниз а X в право.

получаем
Код:

object.x +=mouseX * на соотношение растояний (до плоскости 2D/до  объекта).
object.z -=mouseY * на соотношение растояний (до плоскости 2D/до  объекта).

Только как вот вычислить эти расстояние не могу понять. До плоскости 2D нужно через view порт колдовать,а вот как вычислить до плоскости объекта не знаю.


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

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