- 浏览: 119368 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zhouhaiyang88:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
xurichusheng:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
wgcooo:
javax.naming.NameNotFoundExcept ...
ActiveMq-JMS简单实例使用tomcat -
huang-tao:
你好,在吗?请问,我启动Tomcat时报如下错,是什么原因?= ...
ActiveMq-JMS简单实例使用tomcat -
Eric.Yan:
好文章,明天试一试
ActiveMq-JMS简单实例使用tomcat
先来看客户端fla的构成:
第一帧:登录界面
第一帧的代码:
import flash.events.MouseEvent;
|
import com.adobe.utils.StringUtil;
|
import utils.Alert;
|
|
stop(); |
|
var userName: String = "" ;
|
|
Alert.init(stage); |
|
btnLogin.addEventListener(MouseEvent.CLICK,btnLoginClick); |
|
function btnLoginClick(e:MouseEvent): void {
|
txtUserName.text = StringUtil.trim(txtUserName.text);
|
this .userName = txtUserName.text;
|
if ( this .userName.length<= 0 ){
|
Alert.show( "请输入用户名!" , null , 0xefefef , 0x000000 );
|
}
|
else {
|
gotoAndPlay( 2 );
|
}
|
} |
第二帧:聊天的主界面
代码:
import flash.net.NetConnection;
|
import flash.events.MouseEvent;
|
import flash.events.NetStatusEvent;
|
import flash.events.KeyboardEvent;
|
import utils.Alert;
|
import flash.ui.Keyboard;
|
|
stop(); |
|
var nc:NetConnection;
|
|
function init(): void {
|
nc = new NetConnection();
|
nc.client= new Object ();
|
//定义供服务端广播消息时需要的客户端函数(结合main.asc查看)
|
nc.client.showmsg = function (str: String ): void |
{
|
txtMsg.appendText(str + "\n" );
|
};
|
|
nc.addEventListener(NetStatusEvent.NET_STATUS,connHandler);
|
nc.connect( "rtmp://localhost/chat" ,userName);//注:这里的userName是在第一帧定义的
|
updateMsg( "正在连接服务器..." );
|
btnSend.addEventListener(MouseEvent.CLICK,btnSendClick);
|
|
txtSend.addEventListener(KeyboardEvent.KEY_DOWN,txtSendKeyDown);
|
|
} |
|
function txtSendKeyDown(e:KeyboardEvent): void {
|
if (e.keyCode == Keyboard.ENTER) {
|
btnSendClick( null );
|
}
|
} |
|
function btnSendClick(e:MouseEvent): void {
|
txtSend.text = StringUtil.trim(txtSend.text);
|
if (txtSend.text != "" ) {
|
nc.call( "sendmsg" , null ,txtSend.text);
|
txtSend.text = "" ;
|
}
|
else {
|
Alert.show( "请输入要发送的内容!" , null , 0xefefef , 0x000000 );
|
}
|
} |
|
function connHandler(e:NetStatusEvent) {
|
switch (e.info.code) {
|
case "NetConnection.Connect.Closed" :
|
updateMsg( "成功关闭连接!" );
|
break ;
|
case "NetConnection.Connect.Failed" :
|
updateMsg( "连接尝试失败!" );
|
break ;
|
case "NetConnection.Connect.Success" :
|
updateMsg( "服务器连接成功!" );
|
break ;
|
case "NetConnection.Connect.Rejected" :
|
updateMsg( "连接尝试没有访问应用程序的权限!" );
|
break ;
|
default :
|
txtMsg.appendText(e.info.code + "\n" );
|
break ;
|
}
|
} |
|
function updateMsg(msg: String ): void {
|
txtMsg.appendText(msg + "\n" );
|
} |
|
init(); |
服务端main.asc的处理(注:main.asc保存时,貌似只能选择为utf-8编码,否则运动时客户端一直连接不上)
application.onAppStart = function () {
|
trace ( "onAppStart" );
|
}; |
|
//新客户端连接时触发 |
application.onConnect = function (client, uName) {
|
trace ( "onConnect = " +uName);
|
client.UserName = uName;
|
application.acceptConnection(client); //允许客户登录,如果要对客户身份做验证,在此扩展即可
|
hellomsg= "系统信息:" +client.UserName+ " 进入聊天室" ;
|
application.broadcastMsg( "showmsg" ,hellomsg); //调用所有client的showmsg方法,并传递参数hellomsg(客户端的代码中,必须有对应的showmsg函数)
|
|
//定义服务端的sendmsg方法,以便客户端能调用
|
client.sendmsg = function (msg) {
|
mesg = client.UserName+ ": " +msg;
|
//每次client调用本方法后,服务器同步广播到所有client
|
application.broadcastMsg( "showmsg" ,mesg)
|
};
|
|
}; |
|
//有客户端断开连接时触发 |
application.onDisconnect = function (client) {
|
trace ( "onDisconnect =" +client.UserName);
|
hellomsg= "系统信息:" +client.UserName+ " 离开聊天室" ;
|
application.broadcastMsg( "showmsg" ,hellomsg)
|
}; |
application.onAppStop = function () {
|
trace ( "onAppStop" );
|
}; |
运行中的样子:
注:艾睿论坛上曾有一篇教程利用FMS的远程共享对象来创建聊天室,远程对象在编码上也许更简单,不过个人感觉性能不太理想(因为对于共享对象的广播是FMS自动的,完全不受控制,不管客户端想不想接收消息,都会被动接收消息),本文演示的是另一种常见做法(服务端可以有选择性的仅向某些Client发送消息),而且网上也有很多相关文章,只不过要么是收费的,要么是基于AS2.0的,今天用AS3.0整理出来,于已方便、与人方便。
源代码下载:http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/FMSTxtChatBasicDemo.rar
后话:这个跟silverlight做的聊天室(基于scoket或wcf双工通讯)有什么不同呢? 答:silverlight做聊天室应用,往往需要开发者自己做一个(scoket) server端,而adobe的fms正好充当了这个角色,省去了这一步之后,程序员只需要把注意力集中在客户端和业务逻辑上即可,开发量大大缩减。
发表评论
-
Flash/Flex学习笔记(50):矩阵变换
2011-04-24 13:52 1137先回顾一下Silvelright中的矩阵变换[转]WPF中的M ... -
Flash/Flex学习笔记(49):背面剔除与 3D 灯光
2011-04-24 13:50 957今天继续:上一回Flash/Flex学习笔记(50):3D线条 ... -
Flash/Flex学习笔记(48):迷你滚动条ScrollBar
2011-04-24 13:46 1034先看最终效果: 整个swf最终不到4k, ... -
Flash/Flex学习笔记(46):使用TweenLite
2011-04-24 13:43 1647TweenLite是第三方出品的专用于各种缓动动画的类库,其性 ... -
Flash/Flex学习笔记(45):3维旋转与透视变换(PerspectiveProjection)
2011-04-24 13:41 1182Flash/Flex学习笔记:3D基础 里已经介绍了3D透 ... -
Flash/Flex学习笔记(44):3D线条与填充
2011-04-24 13:39 10723D线条:把上一篇中的3D坐标旋转示例稍做修改,用线把各个 ... -
Flash/Flex学习笔记(43):3D基础
2011-04-24 13:34 1112之前我们所做的动画都 ... -
Flash/Flex学习笔记(42):反向运动学(下)
2011-04-24 13:30 897先要复习一下三角函数与余弦定理: 对于直角三角形,三边长 ... -
Flash/Flex学习笔记(41):反向运动学(上)
2011-04-24 13:29 912先回顾上篇所说的"正向运动学":以人行 ... -
Flash/Flex学习笔记(40):正向运动学
2011-04-24 13:27 855所谓"正向运动学"通俗点讲就是把几个连接部 ... -
Flash/Flex学习笔记(39):万有引力与粒子系统
2011-04-24 13:26 703万有引用公式: 其中G为万有引力常数 var numP ... -
Flash/Flex学习笔记(38):动量守恒与能量守恒
2011-04-24 13:24 914动能公式: 动量公式: 动量守恒: 能量守恒: ... -
Flash/Flex学习笔记(37):坐标旋转
2011-04-24 13:23 994坐标旋转是个啥概念呢? 如上图,(蓝色)小球 绕某一 ... -
Flash/Flex学习笔记(36):碰撞检测
2011-04-24 13:22 583碰撞检测基本上可能分为二类:对象与对象的碰撞检测、对象与点 ... -
Flash/Flex学习笔记(35):弹性运动续--弹簧
2011-04-24 13:21 733上一篇里演示的弹性运动加上摩擦力因素后,物体最终基本上都会比较 ... -
Flash/Flex学习笔记(34):弹性运动
2011-04-24 13:20 744动画中的弹性运动 从视觉效果上接近 物理经典力学中的单摆运 ... -
Flash/Flex学习笔记(33):缓动动画
2011-04-24 13:18 973缓动 与 匀变速 看上去很类似,但其实有区别: 匀变速的 ... -
Flash/Flex学习笔记(32):不用系统组件(纯AS3)的视频播放器--只有8.82K
2011-04-24 13:17 1244以前为了赶项目,利用系统组件制作过一款视频播放器(见Fla ... -
Flash/Flex学习笔记(31):自己动手实现一个滑块控件(JimmySilder)
2011-04-24 13:15 937先看最终的演示: 滑块条的应用实在太广泛了:mp3播放器中声 ... -
Flash/Flex学习笔记(30):如何正确监听Stage对象的事件
2011-04-24 13:13 1265如果想在一个自定义类中注册对stage对象的监听事件,然后在另 ...
相关推荐
NULL 博文链接:https://abstractforever.iteye.com/blog/524123
FMS聊天室FMS聊天室FMS聊天室FMS聊天室FMS聊天室
利用flex和FMS建立聊天室,fms为源码
FMS制作聊天室例子,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
通过FMS实现时时视频聊天(Flash|Flex)源码
环境配置:flash+fms2.0+php+mySQL 1:php环境 推荐使用APMServ5.2.0 (一键配置php) 2:fms环境:fms2.0 登陆用户名:10001-10010 密码都是123456 不明白的可以进QQ群 本引擎QQ交流群:73944013 解压密码在包内的...
Flex和Fms3打造在线聊天室(利用NetConnection对象和SharedObject对象) 中文说明文档和代码, 简单明了好资料
Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。
简易聊天室 flash多人聊天 FMS实现
FMS的最新版本已经到FMS 3了 ,本入门教程使用Flash Media Server 2 演示,但你可以很容易的升到 3,因为FMS 到 FMS3...我把我以前的那些FMS学习笔记整理了一下,做了下修改,成了一页的FMS教程,方便想学FMS的新手来看
asp+fms语音聊天室asp+fms语音聊天室
利用fms服务器和flex来做在线视频聊天.docx
FlashMediaServer3 视频流开发中文文档
flash+FMS斗地主源程序,包含大厅、房间、聊天部分,每个房间可坐50桌。更多flash/flex源程序请登陆海纳论坛: http://bbs.haina2010.com
利用fms实现视频聊天程序,希望对和我一样的菜鸟们能有些帮助
工业互联网:富士康FMS项目案例分享.pptx
一个简单的聊天室供大家分享,基于FMS的AS3聊天室源代码
FlashMediaServer无限制 完全剖解,仅供flash编程爱好者使用,其它商业用途 后果自负。 linux安装FlashMediaServer http://www.vpswz.com/592.html http://blog.csdn.net/china_skag/article/details/7276674 ...
FMS+AS3.0多人聊天室源文件下载。
flash+fms2视频聊天室-附带源码 源码在 html页面上有下载的超链接