三维交互开发(3)-使用脚本

来源:互联网 发布:淘宝代销利润 编辑:程序博客网 时间:2024/05/16 07:22

一提到脚本,不善于编辑的人就会觉的这是一个难以逾越在障碍,但其实脚本和其实语言都只是逻辑的一种体现,只是加入了一些特定语言的语法而已。在Quest3D中,这种逻辑是使用连线来体现的,同时Quest3D也可以支持lua的脚本语言。
上面已经有提到DxStudio的脚本语言使用的是JavaScript,JavaScript的语法可以在其它的网站学习到(如:http://www.w3school.com.cn)。 基本的语法弄懂之后就可以开始我们的脚本编写之旅了。
首先我们把上次做好的三给场景打开来,项目设计窗口和三维场景的窗口的工具栏中都可以看到 ,点“JS”就可以进入对应的脚本编写窗口。
现在我们进入到三维场景,点击“barrel_1”,然后右击会弹出


 ,点击“Edit Script”,后进入脚本编辑窗口(注:如果直接在三维场景点击工具栏的“JS”,将进入的三维场景脚本编辑。除了在预览窗口右击出菜单来,还可以在模型引用列表中右击出菜单来进入脚本编辑器)
脚本编辑器如图:
 
写脚本前先说一下,在DXS中的一些“JS关键字”,
1. layers 表示所有层,输入layers.时会自动弹出所有层列表如图.


  (find(id),表示通过Id来查找层)
2. layer 表示模型或场景所在的层
3. scenes 表示所以场景,输入scene.时同样会弹出所以场景列表(二维和三维场景)
4. scene当前模型或场景所在的场景(如:在scene_1场景中的模型脚本的事件中写print(scene.id),将会输出“scene_1”在控制台)
5. objects 表示当前场景与所有模型引用列表
6. object 表示当前模型
7. system 表示系统的一些方法和属性。
8. vector、Rotation 坐标、缩放、旋转会使用到的类
(其它还有一些DXS的关键字以后有用到再说明)

好现在我们来做一个点击到模型,模型会点变成红色,并且会移动一个单位的脚本。


我上面的操作中,我们已经进入了barral_1的脚本编辑窗口,在右下角的document和scene_1.dxscene两个脚本列表(黑白表示现在里面没有输入脚本),双击Scene_1.dxscene脚本内容中会添加一个scene_1的脚本内容选项卡,在脚本内容中输入代码
  //定义一个变量来保存最后点击模型,一会用来还原模型颜色
 var _lastSelectObject;
(DXS不允许有中文的注释,所以我在文档中//的内容不要写入DXS)
然后关闭scene_1.dxscene选项卡,回到barral_1的脚本编辑窗口,在右上的事件列表中,双击onClick事件(点击模型事件),在脚本内容中自动会添加一段如图的代码
 
好我们在大括号里面输入代码:
 //表示赋予在scene_1中定义的_lastSelectObject值为,当前的object
  //以后如果有调用某个场景或模型脚本中的变量或方法时,都是通过”场景或模型.script.方法或变量”
 scene.script._lastSelectObject=object;

 //表示当点击模型时,模型的X轴坐标加1个单位
 object.pos=new Vector(object.pos.x+1,object.pos.y,object.pos.z);

 //表示当点击模型时,模型的颜色变为红色
 object.color=new Color("#ff0000");

  //向控制台输出
  print(object.id+”:PosX+1”);
同样的操作,在crate_1也添加一样的代码。
同样的操作,在ground_plane_1的onClick添加代码如下:

  //如果记录最后点击的模型不为空,将模型颜色还原
 if(scene.script._lastSelectObject!=null)
 {
  scene.script._lastSelectObject.color=
   new Color("#ffffff");
 }
好了,保存一下,按F12(运行),看一下效果吧。
 


后注:1.本人英文水平实在是烂到极点,所以在DXS里面的英文注释经常会词不达意
 2.在点本例中,有一点点逻辑上的问题,当你点了一个模型,再点另一个模型,会出现两个都变成红色,再点地面时,只还原了一个颜色。很容易解决,当做来熟悉一下dxs脚本的练习吧。

 

源文件下载地址:http://download.csdn.net/source/2640457

原创粉丝点击