最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 网络设计学院 > Flash教程

Flashcom中远程共享对象SharedObject

日期:08-31    来源:中国设计秀    作者:cnwebshow.com

学习fcs也有差不多一个月了,感觉最有特色的东西还是SharedObject.SF9中国设计秀
SharedObject有不少东西,本地操作就不说了(相信很多人没接触fcs也用过);就说说远程共享对象吧.SF9中国设计秀
基本的应用流程是:SF9中国设计秀

my_nc = new NetConnection(); SF9中国设计秀
my_nc.connect("rtmp:/app",变量1,变量2,...); SF9中国设计秀
mySO=getRemote("mySO",my_nc.uri,false) SF9中国设计秀
mySO.connect(my_nc); SF9中国设计秀
mySO.onSync=function(info){  SF9中国设计秀
} SF9中国设计秀
mySO.data[property]=newValue SF9中国设计秀
//SF9中国设计秀

下面解析一下:SF9中国设计秀

my_nc = new NetConnection(); SF9中国设计秀
my_nc.connect("rtmp:/app",变量1,变量2,...); SF9中国设计秀
mySO=getRemote("mySO",my_nc.uri,false) SF9中国设计秀
// mySO:共享对象名字; SF9中国设计秀
// my_nc.uri:共享对象共享连接到my_nc.uri的用户; SF9中国设计秀
// false:还可以用true或空;英文解析是: SF9中国设计秀
// 1. null or false :persistence not on the server SF9中国设计秀
// 2. true: persistence on the server (not on the local); SF9中国设计秀
// 3. A full or partial local path to the shared object SF9中国设计秀
// persistence on the server and local SF9中国设计秀
// 我也不大清楚这个意思,但我总结:false:当所有用户都停掉  SF9中国设计秀
// 时 mySO清空;true: 不清空, SF9中国设计秀
mySO.connect(my_nc); SF9中国设计秀
//连接mySO到服务器 SF9中国设计秀
mySO.onSync=function(info){  SF9中国设计秀
} SF9中国设计秀
//mySO事件 SF9中国设计秀
改变它的值(一旦改变它的值就会触发onSync事件): SF9中国设计秀
mySO.data[property]=newValueSF9中国设计秀

到这里就可以基本应用,当然如果你想在服务器也创建一个对应的mySO来也可以用SF9中国设计秀
application.mySO = SharedObject.get("mySO", false);SF9中国设计秀
但要注意的是在服务器里操作mySO的属性是要用setProperty来改变,或是把一个对象作为它的属性,那么操作对象就不用用setProperty了.SF9中国设计秀
//SF9中国设计秀
下面来重点说下mySO的事件:onSyncSF9中国设计秀
SharedObject有两个事件:onStatus和onSyncSF9中国设计秀
两个基本上是一样的,但是有一点(不知道是不是这点使得大家不用onStatus):onStatus对新值和旧值相同时是不会触发这个事件的,SF9中国设计秀
而onSync却不管是否相同都会触发;SF9中国设计秀
先看一个例子:SF9中国设计秀

my_So.onSync = function(info) { SF9中国设计秀
for (name in info) { SF9中国设计秀
trace("[sync] Reading Array Object #"+name+" code ("+info[name].code+","+info[name].name+")"); SF9中国设计秀
switch (info[name].code) { SF9中国设计秀
case "change" : SF9中国设计秀
var property = info[name].name; SF9中国设计秀
var newValue = this.data[property]; SF9中国设计秀
_root[property+"_in"].text = newValue; SF9中国设计秀
break; SF9中国设计秀
case "success" : SF9中国设计秀
break; SF9中国设计秀
case "reject" : SF9中国设计秀
break; SF9中国设计秀
case "clear" : SF9中国设计秀
break; SF9中国设计秀
case "delete" : SF9中国设计秀
break; SF9中国设计秀
trace("data is updated"); SF9中国设计秀
} SF9中国设计秀
} SF9中国设计秀
};SF9中国设计秀

操作:SF9中国设计秀

mySO.data[mytxt]=50SF9中国设计秀

干脆就在上面注析吧:SF9中国设计秀

my_So.onSync = function(info) { SF9中国设计秀
//info:事件onSync触发的返回信息, 是个一维数组,两个属性(code,name) SF9中国设计秀
for (name in info) { SF9中国设计秀
//name:变化的属性名,这个是一个遍历,看看在这次事件中有哪些属性改变了,(常常只有一个属性改变) SF9中国设计秀
trace("info[name].code:"+info[name].code+" info[name].name: "+info[name].name); SF9中国设计秀
//输出info[name].code:相对于本客户端的事件类型:如下的switch; SF9中国设计秀
//输出info[name].name:属性名字 SF9中国设计秀
switch (info[name].code) { SF9中国设计秀
case "change" : SF9中国设计秀
//当事件类型是"改变"时,基本就是在这里广播事件的,其它的每个客户都执行这里的语句 SF9中国设计秀
var _property = info[name].name; SF9中国设计秀
var _newValue = this.data[_property]; SF9中国设计秀
_root[_property].text = _newValue; SF9中国设计秀
break; SF9中国设计秀
case "success" : SF9中国设计秀
//当事件类型是"成功"时:注意:当本客户端上改动触发自已是"成功";而其它客户端则是"改变"; SF9中国设计秀
break; SF9中国设计秀
case "reject" : SF9中国设计秀
//当事件类型是"修改不成功"时: SF9中国设计秀
break; SF9中国设计秀
case "clear" : SF9中国设计秀
//这个用得比较少,不是很清楚,根据英语的意思自已也不是很理解: