SharedObject:可以从其他客户端接收事件,但在保存数据后永远不会触发事件

时间:2016-07-21 13:38:05

标签: actionscript-3 flash flash-cs5 flashdevelop shared-objects

我正在使用SharedObject来创建一个简单的聊天应用程序。 SharedObject创建得很好,当其他客户端更新SO上的数据时,我的应用程序可以接收同步事件。但是,当我的应用程序尝试将数据保存在SO上以向其他客户端发出信号时,问题就出现了。我已使用以下代码验证数据已更改:

trace("before:"+so.data.chatMessage);
so.data.chatMessage = msg.text;
trace("after:"+so.data.chatMessage);

它说“之前:abc”和“之后:def”。遗憾的是,在SO上的数据发生变化后,没有客户端收到同步事件,包括使数据自行更改的客户端。所以这意味着这个客户端可以接收其他客户端的消息,但本身的消息永远不会消失。

之前有人见过这样的问题吗?谢谢, 千斤顶

1 个答案:

答案 0 :(得分:2)

您必须致电flush()

  

如果不使用此方法,Flash Player会在共享对象会话结束时将共享对象写入文件 - 也就是说,当SWF文件关闭时,共享对象被垃圾收集,因为它不再有任何引用,或者当您致电SharedObject.clear()SharedObject.close()时。

使用setProperty()更改属性:

  

更新共享对象中属性的值,并向服务器指示属性值已更改。

由于您只更改了data对象的属性,因此没有通知该值已更改。

  

调用so.flush()导致“错误:错误#2130:无法刷新SharedObject。”但它没有打印内部错误。所以似乎问题是同花顺不能成功......任何想法怎么可能发生?

看看另一个问题:

Error #2130 Unable to flush sharedObject