- 最后登录
- 2022-10-8
- 注册时间
- 2010-12-6
- 阅读权限
- 100
- 积分
- 14150
- 纳金币
- 76544
- 精华
- 23
|
鼠标交互可能是新时代软件的基本要求之一,连NDS掌机都能交互=_=。没有鼠标交互,做出的作品/产品会不那么用户亲和。
但是,flash3d中鼠标交互是个问题非常多的主题。在我们的实战中,会遇到很多难以解决的麻烦。我们也对这类问题开发了自己的包。
这里我们不可能一一讨论,只能讲解最基本的思路。如果实际遇到任何问题,欢迎到讨论区留言
(鼠标点击任意球放大)
原理解释:
我们认为是点击在物体上触发的事件,实际上是点击在物体的贴图上。也就是说flash3d的鼠标点击还是和点击平面图形的原理相同,只不过是点击在一群构成某个物体的平面图形上。由于flash3d交互的思想并没有定型,所以我们暂时不对这方面原理做细致分析。
这次我们要制作一个让被鼠标点击的那个球体放大的程序。
请先下载-> 源代码下载( 在附件请下载~~~~~)
代码解释:
首先最重要的是把’窗口’的交互设成***e,(如果不记得什么是窗口,请参考《第一篇 人人都能PV3D》—点击到第一篇
)
viewport.interactive=***e;
下面这两步,是最正规的导入位图贴图的步骤,我们以前从来都是直接简写为new BitmapFileMaterial("map1.jpg"),这次我们来试试专门声明出来。
private var bfm1:BitmapFileMaterial;
private var bfm2:BitmapFileMaterial;
bfm1=new BitmapFileMaterial("map1.jpg");
bfm2=new BitmapFileMaterial("map2.jpg");
这步可能有点难以理解,因为要先把贴图变成可交互,常常有朋友忘掉这一步。(看了这篇以后谁忘掉了,还是自罚面壁半小时^_^)
bfm1.interactive=***e;
bfm2.interactive=***e;
侦听InteractiveScene3DEvent,这是pv3d鼠标交互的事件,分别触发onInter1和onInter2
sphere1.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onInter1);
sphere2.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onInter2);
鼠标点击到哪个球,就让哪个球变大
public function onInter1(evt:InteractiveScene3DEvent):void {
sphere1.scale=1.5;
sphere2.scale=1;
trace("gay");
}
private function onInter2(evt:InteractiveScene3DEvent):void {
sphere1.scale=1;
sphere2.scale=1.5;
trace("lesbian");
}
这里还是用我们前几天发布的方便镜头旋转的orbitY。 讨论区这里有具体的使用方法和参数代表的含义。--〉去讨论区
总之这句是为了能让我们更容易看出破面有没有解决慢慢转动摄像机用。
camera.orbitY(sphere1,1,900,500);
当然,为了使用上面的所有功能,要导入必须的类:
import org.papervision3d.events.InteractiveScene3DEvent;
鼠标交互,特别是网页软件中是非常重要的功能之一,好好掌握和研究它吧,它会让你的作品更有趣更完美。(更多flash3D教程尽在web3D纳金网http://www.narkii.com/) |
|