基本信息
源码名称:聊天室源码下载(ActionScript 3.0实现)
源码大小:2.58M
文件格式:.rar
开发语言:C#
更新时间:2016-11-16
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍


package demo.chartRoom.ui
{
	import demo.chartRoom.serverApi.DataEvent;
	import demo.chartRoom.serverApi.IServerApi;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import org.aswing.ASColor;
	import org.aswing.ASFont;
	import org.aswing.AsWingConstants;
	import org.aswing.BorderLayout;
	import org.aswing.JButton;
	import org.aswing.JLabel;
	import org.aswing.JPanel;
	import org.aswing.JScrollPane;
	import org.aswing.JSplitPane;
	import org.aswing.JTextArea;
	import org.aswing.SoftBoxLayout;
	import org.aswing.geom.IntDimension;
	import org.aswing.geom.IntPoint;
	public class ChartRoom extends Sprite
	{
		private var upDown:JSplitPane//把界面划分为上下俩个区域
		private var leftRight:JSplitPane; //把聊天室上部分区域划分为左右两个区域
		private var allMsg_txt:JTextArea;//聊天历史文本框
		private var allMsg_panel:JScrollPane;//滚动聊天内容的容器
		private var users_panel:JScrollPane;//显示所有用户的面板
		private var msg_pan:JPanel;//消息发送区域
		private var msgText_panel:JScrollPane;//滚动消息内容的容器
	 	private var msg_txt:JTextArea;//消息内容文本框
		private var seletedUserLabel:JLabel;//当前被选中的用户标签
		private var selectedId:String;//被选中用户的ID
		private var userInner_panel:JPanel;//用户标签容器
		private var send_btn:JButton;//发送按钮
		private var onLineUserCount:uint=0;//当前在线人数
		 
		 
		private var _srvApi:IServerApi;
		public function set srvApi(api:IServerApi):void//设置通信与控制对象
		{
			_srvApi=api;
			//添加数据事件
			_srvApi.addEventListener(DataEvent.ALL_DATA_ARRIVE,onAllDataArrive);	
		}
		public function ChartRoom()
		{
			//创建上下分栏控件
			upDown=new JSplitPane();
			upDown.setOrientation(AsWingConstants.VERTICAL);
			upDown.setSize(new IntDimension(800, 600));
			upDown.setDividerLocation(140);
			this.addChild(upDown);
			//创建左右分栏控件
			leftRight=new JSplitPane();
			leftRight.setOrientation(AsWingConstants.HORIZONTAL);
			leftRight.setSize(new IntDimension(800, 300));
			leftRight.setDividerLocation(300);
			upDown.append(leftRight,JSplitPane.LEFT);
			//创建历史消息显示的区域及控件
			allMsg_panel=new JScrollPane();
		 	allMsg_txt=new JTextArea("");
		 	allMsg_panel.append(allMsg_txt,BorderLayout.CENTER)
		 	leftRight.append(allMsg_panel,JSplitPane.LEFT);	 	
		 	//创建登录用户显示区域
		 	users_panel=new JScrollPane();
		 	userInner_panel=new JPanel();
		 	var layout:SoftBoxLayout=new SoftBoxLayout();
		 	userInner_panel.setLayout(layout);
		 	layout.setAxis(AsWingConstants.VERTICAL);
		 	users_panel.append(userInner_panel);
		 	leftRight.append(users_panel,JSplitPane.RIGHT)
		 	//创建消息发送区域
		 	msg_pan=new JPanel();
		 	var blayout:BorderLayout=new BorderLayout(5,5);
		 	msg_pan.setLayout(blayout);
		 	upDown.append(msg_pan,JSplitPane.RIGHT); 
		 	msgText_panel=new JScrollPane();
		 	msg_txt=new JTextArea();//创建消息发送框
		 	msgText_panel.append(msg_txt);
		 	msg_pan.append(msgText_panel,BorderLayout.CENTER);
			send_btn = new JButton();//创建消息发送按钮
			send_btn.setLocation(new IntPoint(300, 0));
			send_btn.setSize(new IntDimension(104, 400));
			send_btn.setText("            发送            ");
			msg_pan.append(send_btn,BorderLayout.EAST);
			send_btn.addEventListener(MouseEvent.CLICK,send);
			onLineUserCount=0;//设置当前在线人数为0
		}
		//鼠标移到用户标签上的效果
		private function onOver(e:MouseEvent):void
		{
			  var lb:JLabel=e.target as JLabel;
			  
			  if(seletedUserLabel!=null)
			  {
			  		if(lb==seletedUserLabel) return;
			  }
			  lb.setForeground(new ASColor(0xff6600));//设置标签的文字颜色
		}
		//用户标签选中效果
		private function onSele(e:MouseEvent):void
		{
			  if(seletedUserLabel!=null)
			  {
			  		//设置取消选中的效果
			  		seletedUserLabel.setForeground(new ASColor(0x000000));
			  		seletedUserLabel.setFont(new ASFont("宋体",12,false));
			  }
			  var lb:JLabel=e.target as JLabel;
			  //设置选中效果
			  lb.setForeground(new ASColor(0xff0000));
			  lb.setFont(new ASFont("宋体",12,true));
			  seletedUserLabel=lb;//设置选中标签
			  selectedId=seletedUserLabel.getName();
		}
		//鼠标移出用户标签的效果
		private function onOut(e:MouseEvent):void
		{
			  var lb:JLabel=e.target as JLabel;
			  if(seletedUserLabel!=null)
			  {
			  		if(lb==seletedUserLabel) return;
			  }
			  lb.setForeground(new ASColor(0x0));//设置是表移出时的文字颜色
		}
		public function send(e:MouseEvent):void//消息发送
		{
			if(seletedUserLabel==null)//如果没有选中的人,则发送给所有人
			{
			 	_srvApi.send("所有人",msg_txt.getText());//对所有人说
			}
			else
			{
				_srvApi.send(seletedUserLabel.getText(),msg_txt.getText());//对选中的某人说
			}
			send_btn.setEnabled(false);//禁用发送按钮
			msg_txt.setText("");
		}
		public function updataAllInfo(xml:XML):void//刷新界面
		{
			//更新历史消息内容
			var msgs:XMLList=xml.child("messages").children();
			allMsg_txt.setText("");
			for(var i:int=0;i<msgs.length();i  )
		 	{
		 		var msg:XML=msgs[i];
		 		allMsg_txt.appendText(msg.text() "\n\n");
		 	}
		 	allMsg_txt.scrollToBottomRight();
		 	//更新在线用户列表
		 	var users:XMLList=xml.child("users").children();
		 	userInner_panel.removeAll();
		 	var lb:JLabel=new JLabel("所有人");
	 		lb.setName("ALL");
	 		//设置鼠标事件
	 		lb.setHorizontalAlignment(AsWingConstants.LEFT);
	 		lb.addEventListener(MouseEvent.MOUSE_OVER,onOver);
	 		lb.addEventListener(MouseEvent.MOUSE_OUT,onOut);
	 		lb.addEventListener(MouseEvent.CLICK,onSele);
	 		userInner_panel.append(lb);
		 	for(i=0;i<users.length();i  )
		 	{
		 		var user:XML=users[i];
		 		lb=new JLabel(user.@name);
		 		lb.setName(user.@sid);
		 		//设置鼠标事件
		 		lb.setHorizontalAlignment(AsWingConstants.LEFT);
		 		lb.addEventListener(MouseEvent.MOUSE_OVER,onOver);
		 		lb.addEventListener(MouseEvent.MOUSE_OUT,onOut);
		 		lb.addEventListener(MouseEvent.CLICK,onSele);
		 		userInner_panel.append(lb);
		 		if(selectedId==lb.getName())
		 		{
		 			seletedUserLabel=lb;//获得选中的标签
		 		}
		 		onLineUserCount=i 1;//增加在线人数
		 	}
		 	send_btn.setEnabled(true);
		 	if(seletedUserLabel!=null)
		 	{
		 		//设置选中时的文字样式
		 		seletedUserLabel.setForeground(new ASColor(0xff0000));
			  	seletedUserLabel.setFont(new ASFont("宋体",12,true)); 
		 	}
		}
		public function onAllDataArrive(e:DataEvent):void //刷新聊天
		{
			 updataAllInfo(e.data);//更新借卖弄
		}
	}
}