[Logo]
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing  
[Register] Register / 
[Login] Login 
не ловится событие MouseEvent3D.MOUSE_DOWN на загруженном 3DS  XML
Forum Index » Alternativa3D 5
Author Message
Golem

[Avatar]

Joined: 15/04/2009 07:36:30
Messages: 238
Offline

день добрый.
есть класс загрузки 3DS-файла - x3DSLoader (основан на уроке "Импорт модели").
есть основной класс, в котором я создаю сцену, ставлю камеру, ... .
там же создаю объект класса x3DSLoader (шарик) и добавляю на сцену примитив Box.

для обоих объектов прописал листенеров
дальше, как в примере SimpleMouseEventsDemo.as (нашел здесь http://forum.alternativaplatform.com/posts/list/281.page#1540) идет обработка мышиных событий, то есть просто двигаю объекты.
так вот, на Box-е все работает, а на загруженном - не ловит клик мышкой.

Подозреваю, что дело в том, что непосредственно загруженный из 3DS объект является дочерним по отношению к ball(x3DSLoader), который выступает чем-то вроде контейнера без габаритов, и возможно надо как-то обеспечить наследование отлова событий.
здесь http://forum.alternativaplatform.com/posts/list/352.page#1927 видел чем-то похожую проблему, но указанное решение мне не подходит..

добавил исходyик на Flash CS4.
 Filename test01.rar [Disk] Download
 Description
 Filesize 323 Kbytes
 Downloaded:  93 time(s)

mike


Joined: 01/06/2008 00:00:06
Messages: 786
Offline

События будут работать только на объектах, имеющих собственные грани.
Golem

[Avatar]

Joined: 15/04/2009 07:36:30
Messages: 238
Offline

уточню:
правильно ли я понял, что в данном случае, собственные грани есть только у объекта x3DSLoader.loader:Loader3DS, а у самого x3DSLoader их как бы и нет?
и ловить события мыши мне надо непосредственно на x3DSLoader.loader ?
mike


Joined: 01/06/2008 00:00:06
Messages: 786
Offline

Неправильно. Вот здесь:
грани есть у тех объектов, которые имеют класс Mesh.
Golem

[Avatar]

Joined: 15/04/2009 07:36:30
Messages: 238
Offline


поэкспериментировав я понял что вы имеете в виду:
объект драггится только за те грани, которые были созданы непосредственно в нем.
при загрузке в классе шарика, кубика, пирамидки и создании одной грани, событие ловится только на этой грани..

применив кривой способ создания события MouseEvent3D.MOUSE_DOWN для родительского не-Mesh-объекта, мне удалось таки отловить на нем нажатие мышью.
но при попытке потащить объект выскакивает ошибка. судя по всему почему-то сбрасывается переменная активного объекта.
подозреваю что сам подход в принципе неверен..

если не трудно, толкните пожалуста в какую сторону надо двигаться, чтобы мой объект, состоящий, например, из кубика, шарика и пирамидки драггался как одно целое...
то есть, класс "главный" загружает класс "шарик-пирамидка-кубик", который в свою очередь загружает три класса - "шарик", "пирамидка" и "кубик", которые могут загружать в себя что-то еще. из из всего этого Mesh-ами будут объекты только самого нижнего уровня.

наверняка же есть способ, но из-за того, что мое ООП пока находится в стадии изучения, приходится пробовать все методом тыка в документацию..
 
Forum Index » Alternativa3D 5
Go to:   
Powered by JForum 2.1.8 © JForum Team