转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> JAVA开发 >> 正文
X3D实战基础讲座之十二         ★★★★

X3D实战基础讲座之十二

作者:闵涛 文章来源:闵涛的学习笔记 点击数:691 更新时间:2009/4/22 23:28:24
天极IT资讯短信服务 电脑小技巧
资费:包月5元
手机
介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。
  在X3D中,通过使用程序化的节点Script来嵌入脚本程序。它支持ECMAScript/JavaScript 或 Java语言。这里解释一下什么是ECMAScript,ECMAScript也是一种脚本语言,由Netscape和Microsoft使用开发,它是一种面向对象语言,ECMAScript和DOM一起十分接近于现在对JavaScript和JScript的实现,虽然说是用于网络环境,但它可以用于任何脚本环境中,并且其语法与JavaScript基本相同。



  在本讲中,我们先来看一个实例过程,然后说明其简单编程方法。

  一、 一个嵌入脚本程序的实例过程

  这个示例是当鼠标点击圆柱体时,圆柱体移出和它相连的球,再单击圆柱体,圆柱体回到原来的位置。示例过程如下:



  (1) 创建一个12..x3d新文档,其初始化程序如下:



  (2) 由于球不需要移动,因此,我们先构造一个球,颜色为黄色。如下面的代码:



  (3) 对于圆柱体的鼠标事件映射,我们使用触摸传感器,见下面的代码:



  (4) 在Group后面添加Script节点。

  (5) 为Script节点添加Field子节点,如下所示:



  (6) 选中Field子节点,在其属性窗口中设置相关属性,结果如下所示:



  说明:name是用来指定域名,accessType是用来设置域的访问类型,通常可以是inputOnly(输入)、outputOnly(输出)和inputOutput(输入输出)。Type指定域变量的数据类型,类型中前缀是SF表示单值,MF表示多值。Value为域变量提供缺省的初始值。

  (7) 再为Script节点添加两个Field子节点,用于输出程序中指定的坐标值和记录是否移出。结果如下面的代码:



  其中,SFBool为单值的布尔型,SFVec3F为单值的三维坐标的实数型。

  (8) 为Script节点CDATA用于添加嵌入脚本程序,然后在CDATA的属性窗口中输入如下的脚本程序:

ecmascript:
function set_translation( isActive ) {
 if (isActive == true) {
  if (isTrans == false) {
   value_changed[0] = 5;
  } else {
   value_changed[0] = 0;
  }
  value_changed[1] = 0;
  value_changed[2] = 0;
  isTrans = ! isTrans;
 }
}
  (9) 单击CDATA的属性窗口中的Apply按钮,程序代码输入有效。此时节点CDATA变成了ecmascript节点。

  (10) 将Script节点命名为USESCRIPT,然后添加ROUTE语句。整个代码如下所示:



  编译并预览,结果正如我们一开始设定那样,单击圆柱体,移出,再单击圆柱体,圆柱体回到原来的位置。如下所示:



  二、 分析

  我们来看看代码的运行过程。首先第一条ROUTE语句将TouchSensor传感器的isActive事件传递给函数set_translation。该函数只有一个形参isActive,这个形参名可以是其他名称,形参的数据类型取决于该函数的类型。当鼠标单击圆柱体时,isActive事件为True,该值传到set_translation,并执行函数代码。由于第一次单击,IsTrans为False,这样该函数运行后,value_changed的值就变为[5,0,0],IsTrans为True。

  value_changed的值改变后,通过第二条ROUTE语句,将其传递给圆柱体所在的父节点Transform的translation域,从而使圆柱体位置发生改变。

  若再单击圆柱体,则仍然会沿着刚才的路由进行数值的传递,从而圆柱体又回到了原来的位置。
从上述示例可以看出,实际上这种嵌入式脚本程序其目的是允许用户自己定义带有输入输出事件的节点。

  三、 多传感器和多个嵌入脚本

  上述示例中,圆柱体位置是直接变化的,能否使圆柱体的位置慢慢变化到指定的位置。也就是说,当单击圆柱体,圆柱体慢慢地移动到[5,0,0]位置,而再单击圆柱体,圆柱体又慢慢回到原来的位置。为了不使程序代码过于复杂,我们只实现前一个动作,即当单击圆柱体,圆柱体慢慢地移动到[5,0,0]位置。

  首先我们构思一下其路由:单击鼠标,激活时间触发器,继而通过位置插补器,使圆柱体慢慢移出。然后根据移出的结果,再通过程序设置时间触发器停止。

  具体程序如下:



  上述代码,读者完全可以自己分析,这里不再赘述。

  总之,通过对X3D的节点,我们可以构造出不一般的场景,这样就可以用于基于WEB的产品展示、网络教学、仿真等一系列领域。本讲座仅仅是一个入门的基础教程,更深层次的探索还需要我们慢慢去体验。



没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台