Script节点 |
||
Script { |
||
url | [ ] | # exposed field MFString |
mustEvaluate | FALSE | # SFBool |
directOutpur | FLASE | # SFBool |
|
||
以下域可由用户定义任意多个: |
||
eventIn | eventTypeName | eventName |
field |
fieldTypeName |
fieldName initialValue |
eventOut |
eventTypeName |
eventName |
域 | ||
url | 脚本的URL或脚本。可能有多个值,浏览器执行第一个它 理解的脚本。 | |
mustEvaluate | 指出当浏览器不再需要脚本的输出时是否还要给脚本发输人事件。若为FALSE,浏览器有时可以提高其性能,因为当没有其它节点需要脚本的输出事件时,浏览器可以不发事件给脚本。除非脚本做了诸如访问网络这样一些浏览器无法识别的事,否则应该保留FALSE。 | |
directOutpur | 指出是否允许脚本直接改变场景节点和动态地建立或删除通路。换句话说,就是指出脚本是否只能通过事件的方法来与世界联系。如果不是十分必要的话,应设为FALSE,可便于浏览器对场景进行优化。 | |
事件 | ||
Script | 节点不能包含内置事件,但对于整个Script节点的输入输出事件可定义任意多个事件。 | |
说明 | ||
一个Script节点包含一个叫作script的程序。这个程序是以Javascript或Java写的。脚本可以接受事件,处理事件中的信息,还可以产生基于处理结果的输出事件。 当一个Script节点接受一个输入事件时,它将事件的值和时间戳传给与输人事件同名的函数或方法。函数可以通过赋值给与事件同名的变量发送事件。一个输出事件与调用发出输出事件函数的输入事件有相同的时间戳。 当一个脚本给另一个节点发出多个具有相同时间戳的事件时,另一个节点的类型将决定处理事件的顺序。总而言之,这个处理过程最接近用户期望的顺序。例如,如果用户的脚本向某个ViewPoint节点发出有相同时间戳的set_position和set_bind事件,浏览器在激活该视点之前会重新设置观点的位置。大多数情况下,用户最好忽略时间戳。 一些脚本语言(包括Java,JavaScript)定义了有特殊意义的函数和方法。例如,如果用户提供了一个叫initialize()的函数,则当世界被装入时,首先调用这个函数。另外,如有shutdown()函数,则在删除世界时调用(例如当用户用Anchor选择了另一个世界时)。eventsProcessed()函数在一个或多个eventIn函数完成后被调用(由浏览器决定是完成每个eventIn函数后调用还是等所有输人事件都处理完了再调用)。 |
主页 | 节点说明 | 来信 |