案例:点击变大变小的按钮改变当前状态,同步到服务器上。(服务器端改变用户属性)
客户端的代码
#VRML V2.0 utf8
DEF allplay Transform {
translation 0 0 0
children [
]
}
DEF myBoxUI GUIGroup {
imagesets ["datas/imagesets/IPhone.imageset"]
lookfeels ["datas/looknfeel/IPhone.looknfeel"]
schemes ["datas/schemes/IPhone.scheme"]
children [
DEF turnBig GUIWindow {
type "IPhone/Button"
size 0.1 0.1
position 0.8 0.8
text "turn big"
}
DEF turnSmall GUIWindow {
type "IPhone/Button"
size 0.1 0.1
position 0.65 0.8
text "turn small"
}
]
}
DEF system System {}
DEF script_easyServer Script {
eventIn SFBool click_turnBig
eventIn SFBool click_turnSmall
field SFNode tempSFNode NULL #存入节点的变量
field SFNode allplay USE allplay
field SFString Bname "" #存放用户名信息
field SFString Bsize "test_mybox_Tbox_Bsize" #存放用户大小信息
field SFString Btran "test_mybox_Tbox_Btran" #存放用户坐标信息
field SFString Bchange "test_mybox_Tbox_Bchange" #存放用户改变的状态
url "javascript:
//点击后用户大小信息改变
function click_turnBig(v){
var usertemp = SFNode.get('userinfo');
usertemp[Bchange]='big';
}
function click_turnSmall(v){
var usertemp = SFNode.get('userinfo');
usertemp[Bchange]='small';
}
//用户信息同步信息时自动调用
function lyinuxUserSync(user,fields,timeouts){
//拿到已经改变的信息
alert('Box{ }===>'+SFNode.get(user['test_mybox_Tbox_Bname']+2));
alert(user['test_mybox_Tbox_Bname']);
//得到需要改变的信息
var chengebox = SFNode.get(user['test_mybox_Tbox_Bname']+2);
chengebox.size[0] = user[Bsize][0];
chengebox.size[1] = user[Bsize][0];
chengebox.size[2] = user[Bsize][0];
alert('改变盒子的大小'+chengebox.size);
}
//用户进入空间时调用

本文展示了一个VRML场景,其中包含两个按钮(变大和变小),用于改变用户在服务器上的状态。当用户点击按钮时,客户端会更新用户信息,并通过NetSyncer同步到服务器。服务器端通过监听用户信息变化来调整用户对应的盒子大小。
最低0.47元/天 解锁文章
4272

被折叠的 条评论
为什么被折叠?



