flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
● payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:12)
浏览主题:问个鼠标交互的问题

问个鼠标交互的问题
guke18410 (2010-02-02 17:31:52)

我按照教程,普通物件如sphere的交互已经实现了
但是用dae格式的就不行,
我是这样做的
...
   viewport.interactive = true;
   materialCar.interactive = true; //这个就是材质贴图
...
   car = new DAE(true);
   car.load("car.XML", new MaterialsList({all:materialCar}));
   car.scale = 100;
   car.y = 100;
   
   car.addEventListener(FileLoadEvent.LOAD_COMPLETE,onloaded);
...
 
private function onloaded(evt:FileLoadEvent):void{
...
    car.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onInterCar);
...
}
 
private function onInterCar(evt:InteractiveScene3DEvent):void{
    trace("mouse clicked");
}
 
但是运行后发现无法侦听到鼠标点击事件,为什么?
是材质作为MaterialsList出现问题,还是DAE类型的不能这么做?
谢谢!
PS:感谢实验室提供这么好的教材,我以后可能会往这个方向发展~~


flash 3d 研究所 DDM君
(2010-02-02 21:28:11)
需要类似这样写 car.getChildByNam("DAE文件中主node的名字").addEventListener

感谢您的支持啊,好好加油!

flash 3d 研究所 guke18410
(2010-02-03 15:00:44)
像我这样低级的问题都能这么及时的回答,太感动了~~

按你说的试了一下

我用for in 迭代了car:DAE的children,发现只有一个名为COLLADA_Scene的属性,改成car.getChildByName("COLLADA_Scene").addEventListener后,还是没办法获取鼠标点击事件。

然后我把car的类型改成Collada型,像这样:car=new Collada("car.XML",new MaterialsList({all:materialCar}));
再对它的children迭代后发现一个Mesh属性,改成car.getChildByName("Mesh").addEventListener,再运行后,就获得了鼠标事件。

不管怎么说,算是成功了一半;但是DAE类型为啥还是不行呢?
                 

flash 3d 研究所 DDM君
(2010-02-04 13:57:33)
对,dae的问题是很多的,而且各种三维软件导出的dae的主node的名字也不一定相同。

实在要侦听模型的话,可以考虑侦听模型的layer,是个sprite,也就是说完全和二维一样的侦听,呵呵^_^


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了