我在FMS中有以下对象
User = function(userName,userId)
{
this.userName = userName;
this.userId = userId;
}
我需要将用户列表发送到客户端swf。一旦我将User对象集合初始化为数组,当我从客户端读取它时,数组元素是未定义的。
但是我也不能发送通用对象。一旦我初始化对象中的数组元素如下。它还在客户端提供了undefined。
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。
对此事的任何解决方案都表示高度赞赏。
提前致谢。
答案 0 :(得分: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。
答案 1 :(得分:0)
谢谢,但是你给了我很好的提示:)在FMS服务器上的应用程序间NetConnection中出现问题。默认情况下,FMS 3使用AMF3序列化。从我的客户端应用程序AS2开始,我在FMS上更改了ObjectEncoding Application.xml
例如。 <ObjectEncoding>AMF0</ObjectEncoding>