如果VRMLScript是VRML中的,VBScript是html之中是,两者如何沟通呢?

HTML中关键代码如下:

<script language="VBscript">

<!--

function M_b()

set M_e=Scene.Engine

M_e.Nodes("MyScript").Fields("nodestring")="Shape {geometry Box{}}"

M_e.Nodes("MyScript").Fields("kk")=TRUE

end function

//以上为"变大"按钮所对应的过程

//以下为"变小"按钮所对应的过程

function M_s()

set M_e=Scene.Engine

M_e.Nodes("MyScript").Fields("nodestring")="Shape {geometry Extrusion{}}"

//将VRML中节点MyScript的nodestring的值设为引号中的值.

M_e.Nodes("MyScript").Fields("kk")=TRUE

//触发VRML中的MyScript脚本运行,这是一种十分巧妙的方法.

end function

!-->

</script>

VRML中关键代码如下:

DEF MyScript Script {

directOutput TRUE

eventIn SFBool kk

field SFNode node USE Transfm

field SFString nodestring ""

url"VRMLSCRIPT:

function kk(){

if(nodestring=='')

{nodestring='Shape {'

+'geometry Extrusion {'

+'}'

+'}' ;

}

node.children=Browser.createVrmlFromString(nodestring);

}

"

}

  Browser是什么?它是VRML Script中的一个全局对象。

  如果你还不知道的话,看看它的12种方法:

  • getName()--浏览器名称
  • getVersion()--浏览器版本
  • getCurrentFrameRate()--每秒刷新帧数
  • getCurrentSpeed()--浏览者行走速度
  • getWorldURL--当前资源地址
  • replaceWorld(nodes)--替换场景为nodes
  • createVrmlFromString(vrmlSyntax)--用vrmlSyntax字符串创建场景
  • createVrmlFromURL(url,node,event)--将url资源创为场景
  • addRoute(fromNode,fromEvent,toNode,toEvent)--增加事件通路
  • deleteRoute(fromNode,FromEvent,toNode,toEvent)--删除事件通路
  • loadURL(url,parameter)--加载资源
  • setDescription(description)--设置描述

 

注意kk与html中的kk是一致的.

附录1.html代码:

<html>

<head>

<script language="VBscript">

<!--

function M_b()

set M_e=Scene.Engine

M_e.Nodes("MyScript").Fields("nodestring")="Shape {geometry Box{}}"

M_e.Nodes("MyScript").Fields("kk")=TRUE

end function

function M_s()

set M_e=Scene.Engine

M_e.Nodes("MyScript").Fields("nodestring")="Shape {geometry Extrusion{}}"

M_e.Nodes("MyScript").Fields("kk")=TRUE

end function

!-->

</script>

</head>

<body>

<OBJECT id="Scene"

CLASSID="CLSID:86A88967-7A20-11d2-8EDA-00600818EDB1"

WIDTH="300"

HEIGHT="300">

<PARAM NAME="Scene" value="kk.wrl">

</OBJECT>

<input type=button value="变大" onClick="M_b()">

<input type=button value="变小" onClick="M_s()"><br>

</body>

</html>

附录2.VRML代码:

#VRML V2.0 utf8

DirectionalLight {

ambientIntensity .5

intensity .2

}

NavigationInfo {

type "EXAMINE"

}

DEF Transfm Transform {

translation -4 0 -4

children [

Shape {

geometry Box{}

}]

}

DEF MyScript Script {

directOutput TRUE

eventIn SFBool kk

field SFNode node USE Transfm

field SFString nodestring ""

url"VRMLSCRIPT:

function kk(){

if(nodestring=='')

{nodestring='Shape {'

+'geometry Extrusion {'

+'}'

+'}' ;

}

node.children=Browser.createVrmlFromString(nodestring);

}

"

}

  转自http://hi.baidu.com/layer7/blog/item/f456dc4a3b12bb2008f7ef4b.html