fms回调as3和as3调用fms

fms的asc目前还不是as3,所以as3要连接fms只要
var myNetConnection:NetConnection = new NetConnection();
_myNetConnection.objectEncoding = ObjectEncoding.AMF0;
_myNetConnection.addEventListener(NetStatusEvent.NET_STATUS,netStatusEventHandle);
_myNetConnection.connect("your fms uri",...arg);

function netStatusEventHandle(e:NetStatusEvent):void {
//your handle code
}

连接fms至少没有因为as2到as3有太多的问题,只要设置下objectEncoding就好了

as3调用fms
客户端修改netStatusEventHandle

function netStatusEventHandle(e:NetStatusEvent):void {
if (e.info.code == "NetConnection.Connect.Success") {
    _myNetConnection.call("serverHandle",new Responder(callServerSucHandle,callServerFailHandle),...arg);
}
}

function callServerSucHandle(rO:Object):void {
//success handle code
}

function callServerFailHandle(rO:Object):void {
//failed handle code
}
fms中的main.asc
application.serverHandle = function (...arg) {
//callServer handle code
};
就OK啦


目前麻烦的还是fms调用客户端的netconnection
按as2时代,还是相当的简单
_yourNetConnection.serverCallBackFun = function (..arg){

}

main.asc
只要client.call("serverCallBackFun ",responderHandle,...arg);就搞定
function responderHandle(...arg) {

}

as3就不能这样啦,当初我试过用一个myNetConnection去派生,问题多多
后来才发现NetConnection有个Client属性,包括set get,问题就解决啦
写一个ClientObj类
package {
public class ClientObj{
    public function callClient(...arg):void {
    //如果要return也是可以的,修改相应就好啦,记得main.asc中的responderHandle要修改就好了
    }
}
}
之后就
var _clientObj:ClientObj = new ClientObj();
_myNetConnection.client = _clientObj;

好啦

just try and have fun!

posted @ 2012-12-08 16:06  rob_2010  阅读(332)  评论(0编辑  收藏  举报