用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
当前位置 :首页>flash教程>Fms教程>列表

(网游基础)FMS做成的客户端动画同步

[来源:闪客无忧 | 作者:弃天笑 | 时间:2008-04-04 | 点击:  | 收藏本文  【 】]
5uflash文章摘要:前一段时间用java跟 flash 写了个最基本的客户端同步程序,现在再发用fms写了,大体上思路是不变的,但是因为服务器的程序不一样,所以多少有点变动。程序在这里就不作详细讲解,我在程序里写了详细的说明,大家可以下载去看。这里只讲下重要的部分 至于程序用到的map。
 前一段时间用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  弃天笑

上一页12 3 4 下一页
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:Flv加字幕方法总结(最新)
下一篇:gotoAndLearn.com的Flash flv视频教程全套下载公布
>>> 最新评论:(共有 1 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  Flash 3d
  相关文章
·flv在线播放的教程
·Learning Flash Media Server 3
·FMS 3.5 正式出售
·从FMS服务器读取文件(图片/SWF/
·FMS在线客服系统(客户端篇)
·FMS在线客服系统(fms脚本)
·FMS在线客服系统(分析篇)
·分布式的Flash Media Server: Gr
·基于SharedObject 3*3数组 做的M
·用flex做的 多服务器 im 及 源码
  热门文章
·Flash进度条的制作详细讲解(组图)
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·FLV播放器汇总
·FLASH+XML相册(附源码)
·flash幻灯片网页效果
·超酷flash光晕移动效果
·Flash打造简单的飘雪动画视觉特效
·flash水影效果字
·flash春雷闪电效果
·Flash制作大雪纷飞效果动画
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号