2010-01-02 56 views
0

我具有以下在FMS如何我可以发送类型对象从FMS到客户

用户=函数(用户名,用户id)对象

{

this.userName =用户名;

this.userId = userId;

}

我需要的用户列表发送到客户端瑞士法郎。一旦我将User对象集合初始化为一个数组,当我从客户端读取它时,数​​组元素是未定义的。

但是我无法发送通用对象。一旦我初始化对象中的数组元素如下。它也给客户端未定义。

var myObj = {userName:“user1name”,userId:“user1id”};

但是下面的作品

var arr2 = [];

arr2 [“userName”] =“user1name”; arr2 [“userId”] =“user1id”;

客户端连接到FMS上的主应用程序。然后通过NetConnection连接到第二个应用程序。我已经使用'registerProxy'功能映射了远程方法。

例如:application.registerProxy(localName,this._nc,remoteName);

上述第二种应用中的方法。我为客户端使用了Actionscript 2。

对此事的任何解决方案都非常感谢。

在此先感谢。

回答

1

据我所知,没有办法将客户端类映射到服务器端FMS类。就我记忆中的旧时代而言,在AS2中这个功能根本不存在。

我试过你的例子与AS3。传递对象(尽管无类型)与FMS 3.5一起使用。

客户端:

private var nc:NetConnection; 
private function init():void { 
    nc = new NetConnection(); 
    nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
    nc.connect("rtmp:/test"); 
} 
private function netStatusHandler(event:NetStatusEvent):void { 
    trace(event.info.code); 
    if(event.info.code == "NetConnection.Connect.Success") { 
     var responder:Responder = new Responder(resultHandler); 
     nc.call("getUser", responder, "hrundik", 1234); 
    } 
} 
private function resultHandler(result:Object):void { 
    if(result) 
     trace(result.userName, result.userId); 
} 

服务器端:

User = function(userName,userId) { 
    this.userName = userName; 
    this.userId = userId; 
} 
application.onConnect = function (client) { 
    trace("client connected!"); 
    client.getUser = function(userName, userId) { 
     return new User(userName, userId); 
    } 
    return true; 
} 

在AS2和AS3之间的差异可能是在对象编码协议的原因正在使用 - AMF0 VS AMF3。虽然AMF0在AS3中按预期工作。

因此,也许考虑将您的应用程序移植到AS3。

0

谢谢,但你给了我很好的提示:)在FMS服务器上的应用程序NetConnection中的问题。默认情况下,FMS 3使用AMF3序列化。由于我的客户端应用程序AS2,我已经更改了ObjectEncoding应用程序。xml on FMS

例如。 <ObjectEncoding>AMF0</ObjectEncoding>

相关问题