Flashcom中远程共享对象SharedObject的用法
2008-04-02 10:50:12来源:互联网 阅读 ()
学习fcs也有差不多一个月了,感觉最有特色的东西还是SharedObject.
SharedObject有不少东西,本地操作就不说了(相信很多人没接触fcs也用过);就说说远程共享对象吧.
基本的应用流程是:
my_nc.connect("rtmp:/app",变量1,变量2,...);
mySO=getRemote("mySO",my_nc.uri,false)
mySO.connect(my_nc);
mySO.onSync=function(info){
}
mySO.data[property]=newValue
//
下面解析一下:
my_nc.connect("rtmp:/app",变量1,变量2,...);
mySO=getRemote("mySO",my_nc.uri,false)
//mySO:共享对象名字;
//my_nc.uri:共享对象共享连接到my_nc.uri的用户;
//false:还能够用true或空;英文解析是:
//1.nullorfalse:persistencenotontheserver
//2.true:persistenceontheserver(notonthelocal);
//3.Afullorpartiallocalpathtothesharedobject
//persistenceontheserverandlocal
//我也不大清楚这个意思,但我总结:false:当任何用户都停掉
//时mySO清空;true:不清空,
mySO.connect(my_nc);
//连接mySO到服务器
mySO.onSync=function(info){
}
//mySO事件
改变他的值(一旦改变他的值就会触发onSync事件):
mySO.data[property]=newValue
到这里就能够基本应用,当然假如您想在服务器也创建一个对应的mySO来也能够用
application.mySO = SharedObject.get("mySO", false);
但要注意的是在服务器里操作mySO的属性是要用setProperty来改变,或是把一个对象作为他的属性,那么操作对象就不用用setProperty了.
//
下面来重点说下mySO的事件:onSync
SharedObject有两个事件:onStatus和onSync
两个基本上是相同的,但是有一点(不知道是不是这点使得大家不用onStatus):onStatus对新值和旧值相同时是不会触发这个事件的,
而onSync却不管是否相同都会触发;
先看一个例子:
for(nameininfo){
trace("[sync]ReadingArrayObject#" name "code(" info[name].code "," info[name].name ")");
switch(info[name].code){
case"change":
varproperty=info[name].name;
varnewValue=this.data[property];
_root[property "_in"].text=newValue;
break;
case"success":
break;
case"reject":
break;
case"clear":
break;
case"delete":
break;
trace("dataisupdated");
}
}
};
操作:
干脆就在上面注析吧:
//info:事件onSync触发的返回信息,是个一维数组,两个属性(code,name)
for(nameininfo){
//name:变化的属性名,这个是个遍历,看看在这次事件中有哪些属性改变了,(常常只有一个属性改变)
trace("info[name].code:" info[name].code "info[name].name:" info[name].name);
//输出info[name].code:相对于本客户端的事件类型:如下的switch;
//输出info[name].name:属性名字
switch(info[name].code){
case"change":
//当事件类型是"改变"时,基本就是在这里广播事件的,其他的每个客户都执行这里的语句
var_property=info[name].name;
var_newValue=this.data[_property];
_root[_property].text=_newValue;
break;
case"success":
//当事件类型是"成功"时:注意:当本客户端上改变触发自已是"成功";而其他客户端则是"改变";
break;
case"reject":
//当事件类型是"修改不成功"时:
break;
case"clear":
//这个用得比较少,不是很清楚,根据英语的意思自已也不是很理解:
//ThisvalueisreceivedbyaFlashplayerthatconnectedtoaSharedObjectforthefirsttime.
//Clearisalsosentiftheserverandclientdataaresofaroutofsyncthattheclientdumps
itsversionoftheSharedObjectandresynchronizesitselfcompletely.
break;
case"delete":
//当mySO给delete掉时
break;
trace("dataisupdated");
}
}
}
//
说到my_SO不得不提的是my_SO.send()这个函数(我很喜欢用),他也是类似onSync的广播事件的用途.这个很好用.
用法:
对应在client或是server端的mySO属性函数:
mySO.toggleBall=function(变量1,变量2..){
这个函数在其他任何的客户端执行,就像onSync相同的效果
}
<!--/message-->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 学习Flash组件应用MP3制作
下一篇: FLASH实现动态模糊效果
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash