| 
       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函数后调用还是等所有输人事件都处理完了再调用)。  |     
  ||
| 主页 | 节点说明 | 来信 |