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





最近更新:
● allthrough阁下在讨论区里 发表新主题“【求助】关于PV3D的VectorSha...”(22:14:36)
● compra viagra阁下在教程区里 回复“《超简易papervision3D基础 ...”(11:24:50)
● cialis阁下在教程区里 回复“cailvenqq的dae模型经验...”(11:24:27)
浏览主题:ddm君请進

ddm君请進
(2009-03-23 12:44:56)

我在本站看了那个車的演示之后,想改成用方向键操控車
但不知為什么不能偵听键盘事件
代碼如下: 幫我看看 谢谢

package {
     import flash.display.Sprite;
     import flash.events.Event;
     import flash.events.KeyboardEvent;
     import flash.ui.Keyboard;
     import org.papervision3d.cameras.FreeCamera3D;
     import org.papervision3d.events.FileLoadEvent;
     import org.papervision3d.materials.BitmapFileMaterial;
     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;

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

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

           
           private function onloaded(evt:FileLoadEvent):void {
                 //car.moveLeft(2000);
                 car.moveUp(50);
                 scene.addChild(car);
           }
           
           private var leftArrow:Boolean;
           private var rightArrow:Boolean;
           private var upArrow:Boolean;
           private var downArrow:Boolean;
           
           private function process(evt:Event):void {
                 if (car) {
                       //car.rotationY+=4;
                       //car.moveForward(120);
                       camera.lookAt(car);
                       if(upArrow==true)
                       car.moveForward(120);
                       else if(downArrow==true)
                       car.rotationY+=4;
                       else if(leftArrow==true)
                       car.rotationY+=4;
                       else if(rightArrow==true)
                       car.rotationY+=4;
                       
                 }
                 renderer.renderScene(scene,camera,viewport);
           }
           
           
           private function onKeyDown(event : KeyboardEvent) : void {
                 trace("hello");
                 switch (event.keyCode) {
                 case Keyboard.LEFT:leftArrow=true; break;
                 case Keyboard.RIGHT:rightArrow=true;break;
                 case Keyboard.UP:upArrow=true;break;
                 case Keyboard.DOWN:downArrow=true;break;
                 }
                       
                 }
                 
     private function keyUp(event:KeyboardEvent):void{   //键盘释放侦听函数
                 switch (event.keyCode) {
                 case Keyboard.LEFT:leftArrow=false; break;
                 case Keyboard.RIGHT:rightArrow=false;break;
                 case Keyboard.UP:upArrow=false;break;
                 case Keyboard.DOWN:downArrow=false;break;
                 }
           }
           
           public function test02():void {

                 viewport=new Viewport3D(600,600);
                 renderer=new BasicRenderEngine ;
                 scene=new Scene3D;
                 camera=new FreeCamera3D(2,200);
                 camera.y=1000;
                 camera.moveBackward(2000);
                 
                 addChild(viewport);
                 
                 
                 
                 //plane=new Plane(new BitmapFileMaterial("map.jpg"),10000,10000,8,8);
                 //plane.pitch(90);
                 //scene.addChild(plane);
                 leftArrow=rightArrow=upArrow=downArrow=false;
                 car=new Collada("car.XML",new MaterialsList({all:new BitmapFileMaterial("map_car.jpg")}));//
                 car.addEventListener(FileLoadEvent.LOAD_COMPLETE,onloaded);
                 this.addEventListener(Event.ENTER_FRAME,process);
                 stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
                 
                 stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);

           }

     }
}


flash 3d 研究所 fur3
(2009-03-23 13:44:17)
每次看到这种指名点姓的标题就很不爽。。。

flash 3d 研究所 DDM君
(2009-03-23 14:42:42)
试试stage 去掉,或者换成this

ps:以后请不要这样写标题,其实别人并不会因为您写‘谁谁请进’就比其他贴近得快,也不会因为没有写谁谁请进而进得慢,对吧。 务必把标题写明确问题,既不会给他人留下不好的印象,也方便以后同样问题的人查询,你说对吧^_^

flash 3d 研究所
(2009-03-23 15:28:02)
恩,第一次發贴不知規矩请見諒

这个方法都試过了,,还是不行呀,,補我调调程序呀,谢谢

flash 3d 研究所 DDM君
(2009-03-23 15:34:15)
把onKeyDown和keyUp这两个方法换个名字这两个名字可能是as3默认名

flash 3d 研究所 DDM君
(2009-03-23 15:35:50)
对了,trace("hello");这一句侦测的到吗?

flash 3d 研究所
(2009-03-23 17:26:19)
老大 还是不行哦

还有trace("hello") ; 侦不到呀...

希望老大幫我调下程序,我是新手不知那里细微地方出错呀

flash 3d 研究所 DDM君
(2009-03-23 17:40:49)
我们有不直接帮助别人改程序的原则,主要只提供建议性的帮助。真是非常抱歉,希望能谅解。

如果有错误信息可以贴出来一下,trace("hello") 侦测不到说明和pv3d没关系


所有onKeyDown,keyUp都改成onKeyDown1,keyUp1
这样解决不了吗?感觉一般就是这个问题啊

flash 3d 研究所
(2009-03-23 18:00:43)
...onkeydown改成onkeydown2也不行

这个問題己經困扰了我三天了呀..!

我把你的程序只加入了按键事件就无法侦听

我看过別人的程序可以用方向键跟我的几乎一样

怎么他能行,我不行呢...我用的是Flex

flash 3d 研究所 fur3
(2009-03-23 18:43:56)
这里贴出来的代码没有任何错误

flash 3d 研究所 fur3
(2009-03-23 19:59:37)
帮你测试过了,代码没错。

flash 3d 研究所
(2009-03-24 15:47:38)
為什么不能用键盘呢?

flash 3d 研究所 smoking
(2010-06-19 14:41:15)
我也是用FLEX,遇到同样的问题!还请高人帮忙解决下

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

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

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

(目前需登陆方可发表)


不想添加了