推荐给好友 上一篇 | 下一篇

VRMLScript与VBScript之间沟通的秘密

VRMLscript与VBscript之间沟通的秘密
作者/来源:www.86vr.com

如果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是什么?它是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);
}
\"
}

 

评分:0

我来说两句

seccode