主体类:
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.events.SyncEvent; import flash.net.NetConnection; import flash.net.SharedObject; import vo.MessageVO; public class flashChat extends Sprite { public var nc:NetConnection; public var serverApp:String = "rtmp:/chat"; public var chat_so:SharedObject; public function flashChat() { nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandle); nc.connect(serverApp); this["send_btn"].addEventListener(MouseEvent.CLICK,sendHandle); } public function netStatusHandle(e:NetStatusEvent):void{ trace(e.info.code); if(e.info.code == "NetConnection.Connect.Success"){
//talk为X:\Flash Media Server 3.5\applications\chat\sharedobjects\_definst_下的fso,远程共享对象 chat_so = SharedObject.getRemote("talk",nc.uri,true); chat_so.addEventListener(SyncEvent.SYNC,syncHandle); chat_so.connect(nc); }else{ trace("连接服务器失败"); } } public function syncHandle(e:SyncEvent):void{
//清空聊天窗口 this["chat_txt"].text = ""; if(chat_so.data.msgList != null){ var tempArr:Array = new Array(); //tempArr = chat_so.data.msgList as Array;
//交换数据 exchangeArray(tempArr,chat_so.data.msgList as Array); if(tempArr != null){ for(var i:int=0;i<tempArr.length ;i++) { var message:Object = tempArr[i]; var fullMsg:String=message.username+"在"+message.date.toTimeString()+"说:"+message.msg; this["chat_txt"].text = this["chat_txt"].text + fullMsg+"\n"; } } } } public function sendHandle(e:MouseEvent):void{ var tempArr:Array = new Array(); exchangeArray(tempArr,chat_so.data.msgList as Array); var msg:MessageVO = new MessageVO(); msg.username = this["name_txt"].text; msg.msg = this["msg_txt"].text; msg.date = new Date(); tempArr.push(msg);
//设置一个msgList属性,指向tempArr chat_so.setProperty("msgList",tempArr); this["msg_txt"].text = ""; } public function exchangeArray(arrNew:Array, arrOld:Array):void { for(var i:int=0;i<arrOld.length ;i++) { arrNew.push(arrOld[i]); } } } }
MessageVO类:
package vo { public class MessageVO { public var username:String; public var msg:String; public var date:Date; public function MessageVO() { } } }