我正在使用SharedObject来创建一个简单的聊天应用程序。 SharedObject创建得很好,当其他客户端更新SO上的数据时,我的应用程序可以接收同步事件。但是,当我的应用程序尝试将数据保存在SO上以向其他客户端发出信号时,问题就出现了。我已使用以下代码验证数据已更改:
trace("before:"+so.data.chatMessage);
so.data.chatMessage = msg.text;
trace("after:"+so.data.chatMessage);
它说“之前:abc”和“之后:def”。遗憾的是,在SO上的数据发生变化后,没有客户端收到同步事件,包括使数据自行更改的客户端。所以这意味着这个客户端可以接收其他客户端的消息,但本身的消息永远不会消失。
之前有人见过这样的问题吗?谢谢, 千斤顶
答案 0 :(得分:2)
您必须致电flush()
:
如果不使用此方法,Flash Player会在共享对象会话结束时将共享对象写入文件 - 也就是说,当SWF文件关闭时,共享对象被垃圾收集,因为它不再有任何引用,或者当您致电
SharedObject.clear()
或SharedObject.close()
时。
或
使用setProperty()
更改属性:
更新共享对象中属性的值,并向服务器指示属性值已更改。
由于您只更改了data
对象的属性,因此没有通知该值已更改。
调用
so.flush()
导致“错误:错误#2130:无法刷新SharedObject。”但它没有打印内部错误。所以似乎问题是同花顺不能成功......任何想法怎么可能发生?
看看另一个问题: