Actionscript 3 正在发送具有writeObject()的数组
目前我正在使用stage3D开发一款基于回合的多人游戏。例如,当服务器发送一个对象时,下面的代码在客户端运行得非常顺利Actionscript 3 正在发送具有writeObject()的数组,actionscript-3,adobe,air,Actionscript 3,Adobe,Air,目前我正在使用stage3D开发一款基于回合的多人游戏。例如,当服务器发送一个对象时,下面的代码在客户端运行得非常顺利 package models { public class Player { public var type:String = "player"; private var _action:String; private var _id:int; private var _username:St
package models
{
public class Player
{
public var type:String = "player";
private var _action:String;
private var _id:int;
private var _username:String;
private var _nickname:String;
public function Player()
{
}
public function get id():int
{
return _id;
}
public function set id(value:int):void
{
_id = value;
}
public function get username():String
{
return _username;
}
public function set username(value:String):void
{
_username = value;
}
public function get nickname():String
{
return _nickname;
}
public function set nickname(value:String):void
{
_nickname = value;
}
public function get action():String
{
return _action;
}
public function set action(value:String):void
{
_action = value;
}
public function toString():String
{
return("id: " + id + " username: " + username + " nickname: " + nickname + "");
}
}
}
但是当我在对象中放置数组时,数组总是返回长度0。现在我已经没有选择了。我用了registerClassAlias
package models
{
/**
* ...
* @author RB
*/
public class ListOfPlayers
{
public var type:String = "list_of_players";
private var _list:Array = new Array();
public function ListOfPlayers()
{
}
public function remove(i:int):void
{
_list.slice(i);
}
public function add(player:Player):void
{
_list.push(player);
}
public function get list():Array
{
return _list;
}
}
}
}
是否尝试为数组添加公共setter?我想这是你的问题你能发布在SharedObject中实际存储和检索Player类的代码吗?再次检查Flash播放器的SOs默认大小限制。它可能已关闭,或者太小(这对单个用户来说是个问题,因此您必须在最后一场游戏中验证FP的so大小设置)。简短回答-您应该将数组声明为公共数组,或者实现flash.utils.IExternalizable接口(readExternal()和writeExternal()方法) IExternalizable接口在将类编码到数据流中时提供对其序列化的控制。IExternalizable接口的writeExternal()和readExternal()方法由类实现,以允许为对象及其超类型自定义数据流的内容和格式(而不是类名或类型)。每个单独的类都必须序列化和重构其实例的状态。这些方法必须与超类型对称才能保存其状态。这些方法取代了本机操作消息格式(AMF)序列化行为 如果一个类没有实现,也没有从 实现IExternalizable接口,然后实现 类将使用公共成员的默认机制序列化 只有因此,类的私有、内部和受保护成员 将不可用