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

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

X3D实战基础讲座之十

摘要: 由于X3D的动画涉及到时间触发器、插值器、事件和路由等概念,因此在本讲中,我们先来看一个简单的示例,然后一步一步深入下去
<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的动画涉及到时间触发器、插值器、事件和路由等概念,因此在本讲中,我们先来看一个简单的示例,然后一步一步深入下去。

  一、 一个简单的示例



  示例的结果如下图所示:



  说明:预览后,球来回移动。

<iframe align=right 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>

  二、 相关概念的理解

  在X3D中,动画的产生涉及到时间触发器、插值器、事件和路由的概念,下面来说明:

  1、 时间触发器TimeSensor

  触发器或者叫做传感器,是用来产生不同类型的事件。时间触发器TimeSensor是根据时间来不断产生事件,它有许多属性,通常把用于输入的属性称为域,或称为输入事件,而把输出的属性称为产生的事件,或称为输出事件。时间触发器TimeSensor的主要域有:

  cycleInterval -- 每个周期的长度,以秒为单位,取值大于0。需要说明的是:如果cycleInterval < 0.01 秒,TimeSensor 可能不起作用。

  enabled -- 若为True,当条件成立时产生时间相关事件;若为False,在任何条件下都不会产生时间相关事件。

  loop -- 表明时间传感器是无限循环,还是在一个周期后被终止。

  startTime -- 开始产生事件的时间。

  stopTime -- 终止产生事件的时间。其值若小于等于起始时间,则被忽略。

  pauseTime -- 暂停时间。若当现在时间>= pauseTime,isPaused 值变为True,暂停。

  resumeTime -- 恢复时间。当resumeTime <= 现在时间,isPaused值变为False,再次激活。

  而事件主要有:

  isActive -- 表明时间传感器当前是否在运行。若在运行,则返回True;若处于停止状态,则返回False。

  isPaused -- 表明时间传感器当前是否在暂停。

  cycleTime -- 在每个周期开始时,返回当前时间。

  fraction_changed -- 当前周期的完成比。从0(周期开始)到1(周期结束)。

  time -- 从格林威治时间1970年1月1日子时(午夜12点)至今所经过的秒数。

  2、 插值器

  计算机动画按生成的方法可以分为逐帧动画、关键帧动画和造型动画等几大类。在关键帧动画设计中,通常需要我们指定关键帧,而中间帧往往由计算机自动生成。X3D中的插值器就起到设定关键帧并自动生成中间帧的作用。它主要有颜色插值器节点(ColorInterpolator)、坐标插值器节点(CoordinateInterpolator)、法向量插值器节点(NormalInterpolator)、方向插值器节点(OrientationInterpolator)、位置插值器节点(PositionInterpolator) 和比例插值器节点(ScalarInterpolator)。除此之处,X3D还提供比较专业的插值器,如NURBS曲线系列插值器等。

  3、 事件

  事件(Events)是在 X3D 运行时环境中产生行为的主要方法,这种方法用来改变域的输入值或接受域的输出值,分别又称为发送到输入域的事件和输出域发送的事件。

  4、 路由

  路由(Route)声明允许我们在把一个节点的输出事件连接到另一个节点的输入事件上,这样可以执行复杂的行为,而不需要使用程序命令。在路由中,一个输出事件发生,相应目的的输入事件就会接受到通知,同时可以对输入事件变动做出相应的处理。这个处理可以改变节点的状态,产生额外的事件,或者改变场景图的结构。

  Route(路由)不是节点,它是一个语句。ROUTE 语句是建立指定节点的域之间通道的语法构件。ROUTE 语句可以出现在 X3D 文件的最上层,或者也可以出现在节点中任何可以使用域的地方。ROUTE 语句应该放置在路由的源节点和目的节点定义之后,而不能放置在源节点中或目的节点中。

zmbbs=1;



↑返回目录
前一篇: Struts 框架之构建 Model组件
后一篇: Java中Decorate的三种实现方法