前一段时间用java跟flash写了个最基本的客户端同步程序,现在再发用fms写了,大体上思路是不变的,但是因为服务器的程序不一样,所以多少有点变动。程序在这里就不作详细讲解,我在程序里写了详细的说明,大家可以下载去看。这里只讲下重要的部分
至于程序用到的map。hashmap类,大家可以看我写那些类,这里也不说了。本来我把所有的程序都封装成了,但是考虑到简单易用,所以把打部分代码写进了时间线上。过一阵再把这些代码封进类吧,看起来会高级一点,呵呵
stop();
import mx.soda.util.Map;
import mx.soda.util.HashMap;
//用户名
var userName:String;
//玩家
var personMC:MovieClip;
//所有玩家mc的深度
var depth:Number = 100;
var mync:NetConnection = new NetConnection();
//其他用户的集合
var userSet:Map = new HashMap();
//连接到服务器,并传送当前用户名
mync.connect("rtmp://localhost/game",userName);
//建立当前登陆玩家
personMC = this.attachMovie("personMC","personMC" + userName,depth++);
//设置用户名
personMC.setName(userName);
//连接状态
mync.onStatus = function(info)
{
if (info.code == "NetConnection.Connect.Success")
{
trace("接通");
}
};
//键盘动作,控制人物移动,并把当前动作发送到服务器
this.onEnterFrame = function ()
{
if( Key.isDown( Key.UP ) )
{
personMC.up();
mync.call("userAction",null,userName,"up");
}
else if( Key.isDown( Key.DOWN ) )
{
personMC.down();
mync.call("userAction",null,userName,"down");
}
else if( Key.isDown( Key.LEFT ) )
{
personMC.left();
mync.call("userAction",null,userName,"left");
}
else if( Key.isDown ( Key.RIGHT ) )
{
personMC.right();
mync.call("userAction",null,userName,"right");
}
}
//当有新用户登陆时,被服务器呼叫
mync.userLogin = function(name:String)
{
//根据名字复制一个新的mc,最近登陆的用户
var mc:MovieClip = _root.attachMovie("personMC","personMC" + name,depth++);
userSet.put(name,mc);
mc.setName(name);
//马上呼叫客户端,把自己的位置告诉新登陆的客户端
mync.call("userInfo",null,userName,name,personMC._x,personMC._y);
};
//当其他用户有动作时,被服务器呼叫
mync.userAction = function(name:String,action:String)
{
var mc:MovieClip = userSet.get(name);
//执行对应的方法
mc[action]();
};
//更新已经登陆的用户
mync.createUser = function(userName,x,y)
{
//根据名字复制一个新的mc
var mc:MovieClip = _root.attachMovie("personMC","personMC" + userName,depth++);
userSet.put(userName,mc);
mc.setName(userName);
mc._x = x;
mc._y = y;
}
这些代码很容易懂吧,接下来是服务端的代码
var userSet = new Object();
//当用户登陆时,响应该事件
application.onConnect = function(client,userName)
{
application.acceptConnection(client);
//把当前登陆的用户名进行广播
for(var str in userSet)
{
userSet[str].call("userLogin",null,userName);
}
//添加当前用户名
userSet[userName] = client;
}
//对客户端传过来的信息进行转发
Client.prototype.userAction = function(userName,action)
{
for(var str in userSet)
{
//避免把信息发给当前用户
if(userName != str)
{
userSet[str].call("userAction",null,userName,action);
}
}
}
//呼叫最新用户更新其他用户资料
Client.prototype.userInfo = function(selfName,userName,x,y)
{
userSet[userName].call("createUser",null,selfName,x,y);
}
最后补上控制mc的代码,是与一个mc捆绑在一起的
/*
* $Id:Person.as $
*
* @author 弃天笑 sujun10@21cn.com
* @version 1.0
* <br>Copyright 2005-2007 The SDK-I Studio
* <br>This program is protected by copyright laws.
* <br>Program Name:
* <br>Date:2007.3.20
*/
class soda.Person extends MovieClip
{
private var speed:Number = 5;
private var nameText:TextField;
public function Person()
{
//初始位置
this._x = 100;
this._y = 100;
}
public function setName(name:String)
{
nameText.text = name;
}
//控制主角的动作
public function right():Void
{
this._x += speed;
}
public function left():Void
{
this._x -= speed;
}
public function up():Void
{
this._y -= speed;
}
public function down():Void
{
this._y += speed;
}
}
恩,如果有什么
问题,大家再讨论吧,下面是flash8环境,我调试过的。如果.swf不行的话,把.swf打包成.exe就可以连接了
分享到:
相关推荐
在本文中,我们将深入探讨FMS(Flash Media Server)与客户端通信编程的两种主要方法:客户端呼叫服务器和服务器端呼叫指定的客户端。FMS 4.5 是Adobe提供的流媒体服务器,它支持实时媒体流传输、实时数据共享以及与...
在本话题中,我们将深入探讨Flash网游基础通讯,重点关注Flash与FMS(Flash Media Server)以及Flash与Java之间的交互。这些技术在构建实时互动游戏和多媒体应用时起着至关重要的作用。 首先,让我们来看看Flash与...
2. 实时传输:RTMP协议是Flash与FMS之间通信的基础,它允许客户端将编码后的音视频数据推送到服务器,并能接收其他客户端的数据流。 3. 多用户同步:FMS负责协调各个客户端的音视频流,确保不同用户之间的时间同步...
1. **FMS聊天室基础** - **聊天室功能**:FMS聊天室是基于FMS构建的实时通信平台,用户可以通过文字、语音或视频进行互动交流。 - **实时性**:利用FMS的实时传输特性,确保消息即时发送和接收,实现低延迟的聊天...
6. **FMS广播系统客户端.swf**:与服务端相对应,这是客户端应用程序的SWF文件,用于在用户端播放视频。 7. **FMS广播系统客户端.fla**:客户端的源文件,允许开发者查看和修改前端代码。 8. **AC_RunActiveContent....
在FMS3的环境中,应用程序实例可以同时运行,每个实例都有唯一名称,提供特定资源,例如在一个多人在线游戏中,每个房间就是一个应用程序实例。多个用户可以连接到同一个实例或不同实例。 总结来说,FMS3是构建实时...
共享对象是存储在服务器上的轻量级数据存储,类似于客户端的Cookie,但适用于服务器和多个客户端之间同步数据。 除此之外,还有其他如`Application.rejectConnection()`用于拒绝客户端连接,以及`Application....
这需要对网络延迟、同步机制以及数据结构有深刻的理解。 #### 结语 综上所述,Flash Media Server不仅是一个流媒体服务器,更是构建复杂交互式媒体应用的基石。无论是基础的音频视频通信,还是更高级的多人协作...
2. FMS3架构:FMS3基于服务器-客户端模型,支持RTMP(Real Time Messaging Protocol)协议,用于实时数据传输,包括音视频流、数据消息等。 二、安装与配置FMS3 1. 安装:首先需要在兼容的操作系统(如Windows或...
FMS是Adobe公司提供的一款强大的流媒体服务器,它能够支持实时的音频、视频通信以及数据共享功能,非常适合用来开发互动性强的网络应用,如聊天室。 【描述】:在“FMS制作聊天室例子”中,开发者可能通过...
Adobe Flash Media Server (FMS) 是一个强大的流媒体解决方案,它为创建丰富的多媒体应用提供了基础架构。FMS支持即时启动、实时视频流以及根据用户带宽自动调整的流速率。该服务器提供三个主要版本,满足不同需求:...
FMS4.5 注册码 FMS4.5 测试可用
5. **实时数据交互**:介绍如何利用FMS3实现实时聊天、白板协作、游戏分数同步等应用。 6. **安全与性能优化**:讨论FMS3的安全设置,如访问控制和加密,以及如何优化服务器性能以应对高并发访问。 7. **故障排查与...
FMS可以作为点播服务器,将录制的流媒体文件转换成适应不同设备和网络环境的格式,如HLS、DASH等。用户可以通过URL访问这些视频资源,实现按需观看。 五、FMS与压缩包文件"**FMS 多媒体**" 压缩包中的"**FMS 多媒体...
3. **编码与转码**:FMS内置了视频编码功能,可以根据网络状况自动调整视频质量,确保流畅的用户体验。同时,它还可以对不同格式的视频进行转码,使其适应不同的设备和平台。 FMS视频监控功能: 1. **实时播放**:...
这种特性使得FMS能够用于构建如聊天室、游戏、远程教育等互动应用。 5. **媒体处理**:FMS可以对媒体数据进行编码、解码、转换等处理,适应不同的网络条件和设备需求。 6. **负载均衡与扩展性**:对于大型应用,...
【FMS服务器端加密】是针对使用FMS(Flash Media Server)进行流媒体服务时,为确保内容安全而采取的一种重要技术措施。FMS,全称为Adobe Flash Media Server,是Adobe公司开发的一款强大的流媒体服务器软件,广泛...