站内搜索: 请输入搜索关键词

当前页面: 开发资料首页 → Java 专题 → X3D实战基础讲座之十二

X3D实战基础讲座之十二

摘要: 通过使用程序化的节点Script来嵌入脚本程序。它支持ECMAScript/JavaScript 或 Java语言
<table cellSpacing=0 cellPadding=5 width=570 bgColor=#fbe392 border=0> <tr> <td> <table cellSpacing=0 cellPadding=5 width=570 border=0> <tr> <td align=middle width=200 bgColor=#e1b004>天极IT资讯短信服务 电脑小技巧
<table cellSpacing=0 cellPadding=3 width="100%" bgColor=#fffcc0 border=0> function check4() { if (dn.mobile.value.length!=11) { alert("手机号码不正确!"); dn.mobile.focus(); return false; } return true; } <form name=dn onsubmit="return check4()" action=http://www.my5757.com/tj/join.jsp target=_blank> <tr vAlign=center> <td>资费:包月5元
手机: <input style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 16px" size=11 name=mobile> <input type=image height=18 width=45 src="http://www.my5757.com/yesky/images/d34.gif" align=middle border=0 name=image2> </td></tr><input type=hidden value=yjq name=stype> </form></table></td> <td width=370 bgColor=#fbc403>介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。 </td></tr></table></td></tr></table>
  在X3D中,通过使用程序化的节点Script来嵌入脚本程序。它支持ECMAScript/JavaScript 或 Java语言。这里解释一下什么是ECMAScript,ECMAScript也是一种脚本语言,由Netscape和Microsoft使用开发,它是一种面向对象语言,ECMAScript和DOM一起十分接近于现在对JavaScript和JScript的实现,虽然说是用于网络环境,但它可以用于任何脚本环境中,并且其语法与JavaScript基本相同。

<iframe align=center marginWidth=0 marginHeight=0 src="http://images.chinabyte.com/adjs/iframe-pip/y-software-pip.html" frameBorder=0 width=360 scrolling=no height=300></iframe>

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

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

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



  (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的属性窗口中输入如下的脚本程序:

<table width="100%" bgColor=#ffffff> <tr> <td>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;
 }
}</td></tr></table>
  (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的产品展示、网络教� А⒎抡娴纫幌盗辛煊颉1窘沧鼋鍪且桓鋈朊诺幕〗坛蹋畈愦蔚奶剿骰剐枰颐锹ヌ逖椤�


zmbbs=1;



↑返回目录
前一篇: 用JBuilder 9 开发一个文本编辑器
后一篇: 用JBuilder9 开发Struts实例