首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

奋斗了一宿,总算找到有关问题了,但是不知道为什么请大家来指教

2012-03-04 
奋斗了一宿,总算找到问题了,但是不知道为什么请大家来指教实现在线聊天功能,按照:http://abstractforever.

奋斗了一宿,总算找到问题了,但是不知道为什么请大家来指教
实现在线聊天功能,按照:http://abstractforever.javaeye.com/blog/524122 来做的,在此谢谢博主分享

发现的问题是:一个客户端发送数据,只会在该端显示该客户发的信息,另一端虽然触发了SO的同步事件,但是没有数据.

找了一晚上,终于发现是因为之前我用了一个类(ListConn),类里面多了两句话....以下详细说.
这个类是用来做在线用户列表的,先做的这个类,后来才做的聊天功能,所以两者之间没有什么联系(至少我写代码的时候没有关联到).
实例化这个类的时候创建一个连接,获取在线用户的SO.

我试过把这个连接作为实现聊天功能的连接,问题同上...
后来为聊天功能,我重新创建一个连接,问题还是同上...

最后发现是因为ListConn里面多了两句话:
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0; 
SharedObject.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;  

把他们注释掉就一切OK了.这到底是为什么?请教各位了.

[解决办法]
用于 NetConnection 对象的默认对象编码。将对象写入到二进制数据中或从二进制数据中读取对象时,defaultObjectEncoding 属性将指示对数据进行序列化处理时使用的 Action Message Format (AMF) 版本:ActionScript 3.0 格式 (ObjectEncoding.AMF3) 或 ActionScript 1.0 和 ActionScript 2.0 格式 (ObjectEncoding.AMF0)。 

默认值是 ObjectEncoding.AMF3。更改 NetConnection.defaultObjectEncoding 不会影响现有 NetConnection 实例,只会影响随后创建的实例。

若要单独设置某个对象的编码(而非设置整个应用程序的对象编码),请改为设置 NetConnection 对象的 objectEncoding 属性。


SharedObject.defaultObjectEncoding 的默认值设置为使用 ActionScript 3.0 格式 (AMF3)。如果要创建 ActionScript 2.0 或 1.0 SWF 文件可以读取的本地共享对象,则应在创建任何本地共享对象之前,在脚本起始处将 SharedObject.defaultObjectEncoding 设置为使用 ActionScript 1.0 或 ActionScript 2.0 格式 (flash.net.ObjectEncoding.AMF0)。随后创建的所有本地共享对象都将使用 AMF0 编码,并可与旧内容交互。本地共享对象创建后,将无法通过设置 SharedObject.defaultObjectEncoding 来更改现有本地共享对象的 objectEncoding 值。



看看有用吧

热点排行