• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>FMS>文章内容
  • fms中介函数
  • 来源:flashas.net 作者:吾系衰人 2007-04-26 【

早先整理的一条中介函数。
下边是客户端的函数:

var mync2 = new NetConnection();
btn.onPress = function() {
 ID = txt.text;
 list_arr = [[ID, 123456]];
 mync2.connect("rtmp://localhost/goqo", list_arr);
};
func_arr = [this.func_2(obj.info)];
mync2.onStatus = function(info) {
 trace(info.code);
 if (info.code == "NetConnection.Connect.Success") {
  call_appliaction(this, "func_2", "123", "main");
 }
};
mync2.hello = function(what) {
 output.text = what;
};
function call_appliaction(who, func, info, type, condition) {
 var Send = {};
 Send.func = func;
 Send.info = info;
 Send.type_ = type;
 Send.condition = condition;
 who.call("reCall", null, Send);
}




下边是服务端main.asc文件的代码及解释:
   application.onAppStart = function() {
//menber为客户端成功连接后的用户信息数组在这里初始化;并
//在application.onConnect 事件将用户信息记录
 menber = [];
};
application.onConnect = function(newClient, arr) {
 menber.push(arr[0][0]);
 application.acceptConnection(newClient);
};
Client.prototype.reCall = function(obj) {
  if (obj.type_ == "public" || obj.type_ == true) {
  //广播信息
  application.broadcastMsg(obj.func, obj.info);
 }
//私聊机制
else if (obj.type_ == "private" || obj.type_ == false) {
  for (var i = 0; i<application.clients.length; i++) {
   if (menber[i] == obj.condition) {
    application.clients[i].call(obj.func, null, obj.info);
   }
  }
 }
//调用服务端方法
else if (obj.type_ == "main") {
this[obj.func](obj.info)
 } 
};
//客户端自身方法
Client.prototype.func_2 = function(what) {
 trace("服务端func_2方法被呼叫成功,参数:"+what);
};



工作原理很简单,主要是客户端通过自定义的call_appliaction函数方法呼叫以及传递呼叫类型跟参数数据给服务端的reCall中介函数,并由reCall中介函数分析传递过来的数据,决定事件类型。

下面分析下;
call_appliaction函数的几个参数;
function call_appliaction(who, func, info, type, condition) {
 var Send = {};
 Send.func = func;
 Send.info = info;
 Send.type_ = type;
 Send.condition = condition;
 who.call("reCall", null, Send);
}
call_appliaction的工作主要通过call的方法于连接对象进行通信,并将参数赋值给Send对象,
who:NetConnection//连接名;func:String//要求调用的函数方法名称;info:/ /info为要传递给func函数的参数信息;类型最好是数组或对象;
type:Boolean/String;//告诉服务起reCall函数要调用的函数类型(目前为3中形式分别为:广播函数,私聊机制函数,及服务端函数);condition:String ,//类似用户id之类的,能区分客户端用户的字符信息(暂为私聊机制函数专用);

服务端reCAll函数解释请看相关注释;



上一篇:FMS多人连机教程:[一] 初步认识SharedObject   下一篇:利用FMS做在线视频录制
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)