閑闪互动多媒体-厦门网站建设者 >> 技术文献 >> 虚拟现实 >> X3D教程:事件传递的概念

X3D教程:事件传递的概念

发布: 2007-9-22 11:34 |  作者: webmaster |  来源: 本站原创 |  查看: 236次

ROUTE的语法

  由某个节点中的字段发送一个值,经由ROUTE,传至另一个节点中的某个字段,这样就是一次事件的传递,X3D中藉由事件的接收与发送而产生动态的行为。如下图,Event1 事件表示由 NodeA 节点中的 fieldA1 字段发送一个值,将 fieldA1 字段中的值传给 NodeC 节点中的 fieldC2 字段,如果写成X3D的语法会是:

<ROUTE fromNode="NodeA" fromField="fieldA1"
toNode="NodeC" toField="fieldC2"/>

  其中,fieldA1 与 fieldC2 的资料型态必须要相同。

  当传感器节点或 Script 节点产生起始事件,进而导致产生一连串的连锁事件时,所有的连锁事件都被视为同时发生。例如下图中 NodeA 节点所发送的 Event1 事件导致 NodeC 节点产生 Event2 事件,进而导致 NodeB 节点产生 Event4 事件,即便X3D浏览器实际上在执行时或许会有时间差,但理论上 Event1、Event2、Event4 这三个事件都是视为同时发生的。

  如果节点中的字段发送事件给多个节点,或者接收来自多个节点中的事件,那这些事件也都被视为同时发生,如果您设定了这种ROUTE,要注意事件发生的顺序应该没有任何影响。例如下图中,NodeA 节点中的 fieldA1 字段分别发送事件给 NodeB 及 NodeC 节点,浏览器会认为 Event3 和 Event1 事件是同时发生的,同理,Event3 和 Event2 也是同时发生的。

  事件发生时,除了传递的值之外,浏览器会自动给定该事件一个时间戳记,这个值是一个 SFTime,以表示事件所发生的时间。

  字段的accessType(操作类型)

  事件是从节点中的字段发送或接收,根据事件在字段中作用方式的不同,可将字段分成四种accessType:

· initializeOnly–可以有默认值,但该字段不得变更
· inputOnly–只能接收事件以改变字段中的值
· outputOnly–只能在字段中的值发生改变时传送事件
· inputOutput –可以是默认值,可以接收事件,也可以发送事件

字段命名规则

  在命名自定节点或 Script 节点中的字段时请遵循以下规则:
· 如果名称包含多个英文单字,第一个英文单字的第一个字母小写,其余英文单字的第一个字母大写,如addChildren
· 如果不是以多个英文单字所组成的名称,所有 inputOnly 的字段名称使用 set_ 的前缀,如 set_fraction
· 如果不是以多个英文单字所组成的名称,所有 outputOnly 的字段名称使用 _changed 的字尾,如 fraction_changed
· 如果 outputOnly 字段的资料型态为 SFBool,使用is为前缀,例如 isFoo
打印 | 收藏此页 |  Mail给朋友 | 举报
上一篇 下一篇
 

评分:0

发表评论
seccode 换一个
【已有0位网友发表了看法,点击查看全部评论