基本信息
源码名称:聊天室源码下载(ActionScript 3.0实现)
源码大小:2.58M
文件格式:.rar
开发语言:C#
更新时间:2016-11-16
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在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);//更新借卖弄
}
}
}