自己用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()
		{
			
		}
	}
}

转载于:https://www.cnblogs.com/gino/archive/2010/08/11/1797413.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值