VRMLScript与VBScript之间沟通的秘密
发布: 2007-9-22 11:32 | 作者: webmaster | 来源: 本站原创 | 查看: 126次
按照惯例,我们还是用例子来说明.
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是什么?它是VRMLScript中的一个全局对象.
如果你还不知道的话,看看它的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是一致的.
OVER!
附录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);
}
"
}
