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





最近更新:
● ck47阁下在讨论区里 发表新主题“新手问题...”(07:49:50)
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
浏览主题:求助:给Collada 添加的监听事件怎么不管用啊?

求助:给Collada 添加的监听事件怎么不管用啊?
幽笨笨 (2009-11-23 09:53:35)

package {
     import flash.display.Sprite;
     import flash.events.Event;
     import flash.events.MouseEvent;
     import org.papervision3d.cameras.Camera3D;
     import org.papervision3d.cameras.CameraType;
     import org.papervision3d.events.FileLoadEvent;
     import org.papervision3d.events.InteractiveScene3DEvent;
     import org.papervision3d.materials.BitmapFileMaterial;
     import org.papervision3d.materials.BitmapMaterial;
     import org.papervision3d.materials.utils.MaterialsList;
     import org.papervision3d.objects.parsers.Collada;
     import org.papervision3d.objects.primitives.Plane;
     import org.papervision3d.render.BasicRenderEngine;
     import org.papervision3d.scenes.Scene3D;
     import org.papervision3d.view.Viewport3D;
     import org.papervision3d.view.layer.ViewportLayer;

     public class test01 extends Sprite {
           private var viewport:Viewport3D;
           private var renderer:BasicRenderEngine;
           private var scene:Scene3D;
           private var camera:Camera3D;

           private var plane:Plane;
           private var car:Collada;

           public function test01():void {

                 viewport=new Viewport3D(400,400,CameraType.FREE);
                 renderer=new BasicRenderEngine ;
                 scene=new Scene3D;
                 camera=new Camera3D;
                 camera.y=1000;
                 camera.moveBackward(2000);

                 addChild(viewport);
                 
                 plane=new Plane(new BitmapFileMaterial("asset/map.jpg"),10000,10000,8,8);
                 plane.pitch(90);
                 scene.addChild(plane);
                 var bitmap:BitmapMaterial=new BitmapFileMaterial("asset/map_car.jpg");
                 bitmap.interactive=true;
                 var materialsList:MaterialsList=new MaterialsList();
                 materialsList.addMaterial(bitmap,"all");
                 
                 
                 
                 car=new Collada("asset/car.XML",materialsList);
                 scene.addChild(car);
                 car.addEventListener(FileLoadEvent.LOAD_COMPLETE,onloaded);
                 addEventListener(Event.ENTER_FRAME,process);
           }
           
           private function onloaded(evt:FileLoadEvent):void {
                 car.moveLeft(2000);
                 car.moveUp(50);
                 car.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onclick);
           }
           private function onclick(event:InteractiveScene3DEvent):void
           {
                 trace("click");
           }
           private function process(evt:Event):void {
                 
                 renderer.renderScene(scene,camera,viewport);
           }

     }
}


flash 3d 研究所 幽笨笨
(2009-11-23 11:46:39)
搞定了。。。

flash 3d 研究所 DDM君
(2009-11-23 23:47:38)
呵呵,大家都是很快就能自己解决的刻苦青年,好样儿的!

ps:有空欢迎把解决办法分享出来哟!

flash 3d 研究所 幽笨笨
(2009-11-24 18:34:09)
car.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onclick);


改成 car.getChildByName("Mesh1").addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,onclick);
Collada和dae的 在加载的时候是不一样的。。。。害我苦恼了老半天。

flash 3d 研究所 noxss
(2009-11-25 01:37:52)
是啊,我觉得把DAE和Collada搞得太罗嗦了,两个类之间还有相当地区别,如果两者互换使用可能会碰到许多问题。

flash 3d 研究所 DDM君
(2009-11-25 11:18:23)
好像因为是两个作者写的的原因, 感觉下一版这两个功能应该合并为一个.

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

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

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

(目前需登陆方可发表)


不想添加了