自己用flash+fms3.5做的一个简单的聊天室
主体类:
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()
{
}
}
}
浙公网安备 33010602011771号