在Flex中通过SharedObject远程共享对象可以实现不同客户端的同步更新,这对于编写网络应用比如共享白板、共享游戏等非常重要。关于SharedObject的创建和使用,很多文章都有介绍,但是很少看到文章介绍得更深入一些。
通常情况下,客户端调用SetProperty来通知其他客户端进行更新,响应OnSync来处理更新的结果,但是怎么知道是哪些属性发生了变化呢?
SharedObject.onSync的作用是当远程的SharedObject对象发生变化时则调用此程序并得到一个objArray对象数组,从objArray中可以方便的得知是SharedObject中的哪个属性发生了变化。
objArray中的每个对象拥有3个属性:code, name, and oldValue. 从属性code中可以反映出SharedObject发生了什么变化,属性name可以反映出发生变化的SharedObject属性的名字。
myRemoteSharedObject.onSync = function(objArray)
{
for (var i in objArray)
{
if (objArray[i].code == "change")
{ //objArray[i].name have changed
}
}
}
code的值包括:"clear", "success", "reject", "change", and "delete"
- clear:表示你连接的远程SharedObject不是永久对象或者SharedObject对象的属性都已删除。
- success:表示自己对SharedObject的某一属性的值进行了修改。
- reject:表示自己对SharedObject的某一属性的值进行的修改被拒绝。
- change:表示其他客户端对SharedObject的某一属性的值进行了修改。
- delete:表示SharedObject的某一属性被删除。