快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: 别开玩笑朋友,flash怎么可能建模,找个正规的三维软件吧










最近更新:
● Lourom阁下在讨论区里 回复“Digestion Of Protein...”(19:12:07)
● Lourom阁下在讨论区里 回复“Digestion Of Protein...”(18:57:10)
● Lourom阁下在讨论区里 回复“Digestion Of Protein...”(18:54:55)
浏览主题:久等了-超简易鼠标拖曳模型的功能,mouseDrager

久等了-超简易鼠标拖曳模型的功能,mouseDrager
DDM君 (2008-11-21 23:42:23)

差不多平均每两天就至少会有一个朋友索要简单可使用的有惯性,有范围限制的鼠标拖曳功能。所以前几天叫kevin君整理了一下我们以前用的一段代码。
今天,我们研究所荣幸的向初学者朋友们分享mouseDrager类

如果想先看看效果,可以 点击这里:
pv3d鼠标拖动

首先是下载我们最新的傻瓜包,然后覆盖您以前的傻瓜包。

使用流程:
首先要导入我们的mouseDrager类:
import flab3d.mouseDrager;
当然,由于是鼠标事件,所以这些也是必要要导入的(如果有其他类,则根据具体需要导入)
import flash.events.MouseEvent;

声明mouseDrager:
private var md:mouseDrager;

FreeCamera3D摄像机和模型建立起以后,构造出md。mouseDrager必须接受两个参数,第一个是摄像机且只接受FreeCamera3D,第二个是场景中任意三维模型。
md=new mouseDrager(FreeCamera3D,模型)

由于是鼠标事件,必须写入下面这些东西,触发的类是md. onMouseClick
addEventListener(MouseEvent.MOUSE_DOWN,md.onMouseClick);
addEventListener(MouseEvent.MOUSE_UP,md.onMouseClick);
addEventListener(MouseEvent.MOUSE_MOVE,md.onMouseClick);
addEventListener(MouseEvent.MOUSE_OUT,md.onMouseClick);

最后需要在您的enterFrame,里加入每祯更新画面的
md.process();
















flash 3d 研究所
(2008-11-22 13:55:44)
不错


flash 3d 研究所
(2008-11-22 14:10:14)
感谢苹果君的支持。


flash 3d 研究所
(2008-11-22 17:55:33)
支持~~~


flash 3d 研究所
(2008-11-22 22:07:08)
可以把mouseDrager这个类简单讲解下吗?


flash 3d 研究所
(2008-11-22 22:14:14)
就是用来拖动用的嘛,使用方法都写在帖子里了呢.


flash 3d 研究所
(2008-11-23 18:07:34)
好棒啊 太谢谢你们了 以后会常常来收货 呵呵呵


flash 3d 研究所
(2008-11-23 21:20:57)
为什么只能点击汽车时候才能转动?


flash 3d 研究所
(2008-11-23 21:43:49)
专门这样设计的,因为只有有物体的地方才算,每有物体的地方是不能被拖动的,这样比较有意义。


flash 3d 研究所
(2008-11-24 15:07:20)
太厉害了,不过它拖动的时候,不能根据鼠标的移动来展现物品的角度,只能点一下,再点一下的方式啊!


flash 3d 研究所
(2008-11-24 15:13:44)
呵呵 嗯 主要大家都专著于其他方面的开始 人手也有限 都是挤出时间来给各位朋友清理出我们以前用的这么个功能 所以没有制作的那么完美 主要是满足立刻能浏览物品的需要。希望以后能有朋友能分享出完美且控制参数更多的拖曳。

ps:感谢瘦瘦^_^



flash 3d 研究所
(2008-12-03 23:51:37)
怎么会这样 你说的我不太明白


flash 3d 研究所
(2008-12-04 00:06:34)
是使用方法上看不明白吗?还是说我们人手为什么这么少?还是点击汽车才能转动。
你可以把pv3d窗口想成一个sprite,你点击一个sprite的空地方是不会响应事件的 对吧



flash 3d 研究所
(2009-04-15 00:53:16)
这里学习气氛还可以,教程也写得蛮耐心的。不过对于初学者来说稍微复杂点的例子就立刻变成天书了,哈哈。这篇教材也能有源文件就好了。期待啊。我自己在加md=new mouseDrager(FreeCamera3D,模型)
这个的时候放在了camera=new FreeCamera3D;下面。但显示有错误。就不知道如何了。哈哈。希望高人指点迷津啊。


flash 3d 研究所
(2009-04-15 10:11:39)
真实很抱歉,人手时间有限,没能所有的一一介绍。freeCamera3D必须要提前声明,否则都没有东西怎么作为参数嘛,呵呵^_^


flash 3d 研究所
(2009-04-15 21:02:56)
您好,嫩不能把源码共享一下,我弄了半天也没有弄出来,谢谢!


flash 3d 研究所
(2009-04-15 21:15:39)
不用了 我弄出来了 麻烦了


flash 3d 研究所
(2009-04-16 08:20:37)
不错不错,加油!自己解决问题就会提高一步。好样儿的


flash 3d 研究所
(2009-04-19 21:42:51)
请问DDM君,这个问题都困扰我好几天了,可不可以把源代码分享下.谢谢了


flash 3d 研究所
(2009-04-20 09:07:14)
md=new mouseDrager(FreeCamera3D,模型)

这句话怎么改啊?

模型是什么?例如……


flash 3d 研究所
(2009-04-20 19:06:41)
我弄了好多天 不知所以 老是提示md属性未定义 真心希望楼主将源文件出来共享下
谢谢了


flash 3d 研究所
(2009-04-20 21:17:14)
package {
     import flab3d.mouseDrager;
     import flash.display.Sprite;
     import flash.events.Event;

     import flash.events.MouseEvent;

     import org.papervision3d.cameras.FreeCamera3D;
     import org.papervision3d.render.BasicRenderEngine;
     import org.papervision3d.scenes.Scene3D;
     import org.papervision3d.view.Viewport3D;

     import org.papervision3d.events.FileLoadEvent;

     import org.papervision3d.materials.utils.MaterialsList;
     import org.papervision3d.materials.BitmapFileMaterial;
     import org.papervision3d.objects.primitives.Plane;
     import org.papervision3d.objects.parsers.Collada;

     public class test01 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 var md:mouseDrager;

           private var m:BitmapFileMaterial;

           public function test01():void {

                 viewport=new Viewport3D(400,400);
                 renderer=new BasicRenderEngine ;
                 scene=new Scene3D;
                 camera=new FreeCamera3D();


                 addChild(viewport);

                 plane=new Plane(null,1000,1000,3,3);
                 plane.pitch(90);
                 

                 m=new BitmapFileMaterial("map_car.jpg");
                 car=new Collada("car.xml",new MaterialsList({all:m}));
                 car.addEventListener(FileLoadEvent.LOAD_COMPLETE,onloaded);

                 md=new mouseDrager(camera,car);



                 addEventListener(Event.ENTER_FRAME,process);

                 addEventListener(MouseEvent.MOUSE_DOWN,md.onMouseClick);
                 addEventListener(MouseEvent.MOUSE_UP,md.onMouseClick);
                 addEventListener(MouseEvent.MOUSE_MOVE,md.onMouseClick);
                 addEventListener(MouseEvent.MOUSE_OUT,md.onMouseClick);
           }
           private function onloaded0(evt:Event):void {


           }
           private function onloaded(evt:FileLoadEvent):void {

                 scene.addChild(car);
                 car.addChild(plane);

           }
           private function process(evt:Event):void {

                 md.process();


                 renderer.renderScene(scene,camera,viewport);


           }

     }
}


flash 3d 研究所
(2009-04-20 21:19:23)
这个是在下的源文件,请看后慢慢理解消化,制作时尽量不要直接以这个为范本,这个是当时在下为了节省时间写的很乱。


flash 3d 研究所
(2009-04-21 09:33:20)
啊 非常感谢ddm君


flash 3d 研究所
(2009-04-21 10:18:47)
终于成功了 好激动啊 再次感谢


flash 3d 研究所
(2009-04-21 12:31:27)
DDM 君,真的是非常认真,非常负责,感谢DDM君,真的非常感谢


flash 3d 研究所
(2009-04-21 16:00:56)
能解决就好,把代码读懂理解掉哦,呵呵。加油加油~


flash 3d 研究所
(2009-07-29 17:31:30)
PV3D 2.0 中没有找到FreeCamera3D,怎么办呢?


flash 3d 研究所
(2009-07-29 18:09:20)
请直接用我们的傻瓜包~


flash 3d 研究所
(2009-08-10 20:31:11)
刚刚搞定dae数据导入,想试验拖动的时候却发现有点问题了,现在总是提示:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
     at org.papervision3d.objects::DisplayObject3D/lookAt()
     at org.papervision3d.core.proto::CameraObject3D/lookAt()
我试着在mouseDrager里面改用FlabCamera3D,但是失败了,没有改的时候也报告类似的错误。

另外DDM君做的傻瓜包是不是应该更新一下了?好像pv3D有新版本了呢……


flash 3d 研究所
(2009-08-11 10:54:01)
我们已经用拿到新版本了。本周正在抽时间做新的傻瓜包,主要是防止有什么代码和我们的教程背离或和我们Flab3D包背离而失效。希望在本周内放出。

您不想等可以进到mouseDragger里,把里面FreeCamera的属性,改成FreeCamera3D或Camera3D


flash 3d 研究所
(2009-08-11 11:53:39)
谢谢DDM君,我这就去实验一下。


flash 3d 研究所 qiye2017
(2009-12-18 14:38:26)
为什么我照你的做出来只能够前后移动,而不能够旋转呢。


flash 3d 研究所 Nick
(2010-01-15 09:12:07)
在这看了两天的东东了,算是学了2天的3D了,非常好的学习园地啊,就是突然之间就改版了,好多东东一下子找不到了,嘿嘿。我照例子做demo的时候,一测试就报 1046: 找不到类型,或者它不是编译时常数: Camera3D的错误,傻瓜包也换了N遍了,就是不知道为什么会这样,谁能帮帮我啊? 我一头雾水了...


flash 3d 研究所 DDM君
(2010-01-15 11:58:12)
非常谢谢您的支持.
已经修改了傻瓜包, 现在下载没有问题了^_^ 给您带来麻烦非常抱歉,感谢你告诉我们错误。


flash 3d 研究所 Nick
(2010-01-15 13:33:25)
谢谢DDM君!测试通过,感动啊~两天没琢磨透这错误啊,看样子得系统性地学习下。这么好的论坛,以后自学再也不会那么痛苦了,哈哈~


flash 3d 研究所 DDM君
(2010-01-15 13:40:18)
呵呵, 是的. AS3的基础书籍也去看看哟,会好理解的多. 加油nick君!


flash 3d 研究所 Nick
(2010-01-15 15:05:22)
还没准备好如何系统学习AS3.0呢,结果设计人员给我出了道难题了:那张map_car汽车的图(不知道该称这张图叫什么图)是怎么做出来的?设计说她用3dmax做不出来,这可把我问到了,瀑布汗啊...网上帮她搜索了下资料,可貌似都是关于平面图,立面图,剖面图的,这个不知道怎么称呼的图也不晓得该如何搜索,所以一直未果。DDM君,我想问一下,这种图用3dmax能做吗?如果可以,需要怎样做?谢谢~~


flash 3d 研究所 DDM君
(2010-01-15 15:51:17)
设计人员建游戏模型的经验应该不丰富,任何三维软件都可以做,这个是最基本的功能之一.
去baidu搜索"低模 贴图"哟~



flash 3d 研究所 lf283908792
(2011-12-28 15:14:40)
我做出来为什么只能左右拖动,不能上下拖动!


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

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

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

(目前需登陆方可发表)


不想添加了