0

我在 FMS 中有以下对象

用户 = 函数(用户名,用户 ID)

{

this.userName = 用户名;

this.userId = userId;

}

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

但是我也不能发送通用对象。一旦我初始化了 Objects 中的数组元素,如下所示。它还给出了客户端的未定义。

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。

对此问题的任何解决方案都将受到高度赞赏。

提前致谢。

4

2 回答 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 与 AMF3。虽然,AMF0 在 AS3 中按预期工作。

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

于 2010-01-03T12:46:40.453 回答
0

Thanks, However you gave me good hint :) Problem in the inter application NetConnection on the FMS Server. By default FMS 3 uses the AMF3 serialization. Since my client application AS2, I have change the the ObjectEncoding Application.xml on FMS

eg. <ObjectEncoding>AMF0</ObjectEncoding>

于 2010-01-05T15:36:07.743 回答