| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2009 13:55:52
|
Golem
![[Avatar]](/images/avatar/4d0c87e77cf8fb0b2ea63f71fa8abf83f530a92c.png)
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 |
Download
|
| Description |
|
| Filesize |
323 Kbytes
|
| Downloaded: |
93 time(s) |
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2009 15:12:43
|
mike
Joined: 01/06/2008 00:00:06
Messages: 786
Offline
|
События будут работать только на объектах, имеющих собственные грани.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2009 06:21:01
|
Golem
![[Avatar]](/images/avatar/4d0c87e77cf8fb0b2ea63f71fa8abf83f530a92c.png)
Joined: 15/04/2009 07:36:30
Messages: 238
Offline
|
уточню:
правильно ли я понял, что в данном случае, собственные грани есть только у объекта x3DSLoader.loader:Loader3DS, а у самого x3DSLoader их как бы и нет?
и ловить события мыши мне надо непосредственно на x3DSLoader.loader ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2009 08:08:04
|
mike
Joined: 01/06/2008 00:00:06
Messages: 786
Offline
|
Неправильно. Вот здесь:
грани есть у тех объектов, которые имеют класс Mesh.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2009 15:33:32
|
Golem
![[Avatar]](/images/avatar/4d0c87e77cf8fb0b2ea63f71fa8abf83f530a92c.png)
Joined: 15/04/2009 07:36:30
Messages: 238
Offline
|
поэкспериментировав я понял что вы имеете в виду:
объект драггится только за те грани, которые были созданы непосредственно в нем.
при загрузке в классе шарика, кубика, пирамидки и создании одной грани, событие ловится только на этой грани..
применив кривой способ создания события MouseEvent3D.MOUSE_DOWN для родительского не-Mesh-объекта, мне удалось таки отловить на нем нажатие мышью.
но при попытке потащить объект выскакивает ошибка. судя по всему почему-то сбрасывается переменная активного объекта.
подозреваю что сам подход в принципе неверен..
если не трудно, толкните пожалуста в какую сторону надо двигаться, чтобы мой объект, состоящий, например, из кубика, шарика и пирамидки драггался как одно целое...
то есть, класс "главный" загружает класс "шарик-пирамидка-кубик", который в свою очередь загружает три класса - "шарик", "пирамидка" и "кубик", которые могут загружать в себя что-то еще. из из всего этого Mesh-ами будут объекты только самого нижнего уровня.
наверняка же есть способ, но из-за того, что мое ООП пока находится в стадии изучения, приходится пробовать все методом тыка в документацию..
|
|
|
 |
|
|
|
|