• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>FMS>文章内容
  • Flash Media Server 起步(13)再说说SO....onSync(list)
  • 来源:N神AS研究所 作者:N神 2007-11-05 【

很早以前写过so,当时草草了事,很多人都不太会用。。。

* 最多人不懂的就是:那个list参数

看代码:
my_rso = SharedObject.getRemote("myRSO", NC.uri, true);
my_rso.onSync = function(list) {//.......};
my_rso.connect(NC); //连接

在onSync回调中我们可以知道,我们的my_rso被改变了,但my_rso里具体什么改变了呢? 我们就要分析这个 list参数

list参数其实是一个对象数组 ,首先它是一个数组,里边装了很多对象(Object),每一个对象都包括了SharedObject中一个插槽(slot)的改动信息。我暂时给他起名叫插槽信息对象。。。这名字太猥亵了。。但我就这么叫了。。

插槽信息对象包含两个属性,name code,偶尔还会有个oldValue?我不太常用,不说它

name 描述被改变的属性名

code 描述该属性的改变方式 ,有可能为以下几种值:"success" , "change" , "delete" , "reject" , "clear" ,具体含义后边说

说白了这个插槽信息对象大概就是这么个样子:
{name:"x",code:"success"}

表示x属性被修改成功

要得到这些插槽信息对象就要for in 这个list参数

for (var i in list) {

list[i] 就是插槽信息对象

}

要分析具体so哪改变了,就是分析list[i],比如

if(list[i].code=="change") trace("list[i].name"+被+"change了")

if(list[i].code=="delete") trace("list[i].name"+被+"delete")

“change”是啥?“delete”是啥?

"success" , "change" , "delete" , "reject" , "clear" 具体含义:

success : 表示当前影片修改so的插槽获得了成功

change : 表示so的插槽被别人修改,或填加

也就是说,你修改so的某个属性成功了会收到 "success" ,与此同时其他影片会收到 "change"

reject : 拒绝修改

例如发生在两个或多个客户端同时要修改一个so的插槽,这时候fms会只让一个client修改,并返回"success" 其他的会收到"reject"

delete , clear : 这个好理解,一个是删除,一个是清空,看例子:

比如服务器端删除某个so
so = SharedObject.get("某个so");
so.lock( );
var names = so.getPropertyNames( );
for (i in names) {
 so.setProperty(names[i], null);
}
so.unlock( );

这样client端会收到 若干个插槽信息对象,所有的code都为"delete",表示若干个item被删除

然而这样:
so = SharedObject.get("某个so");
so.clear( );

client端就只会收到一个插槽信息对象,code属性为“clear”

完。




上一篇:Flash Media Server 起步(12)只允许客户打开一个客户端   下一篇:提升你FMS的安全,让客户端无法修改SharedObject
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)