AS3将矢量转换为数组

时间:2012-05-19 09:25:35

标签: actionscript-3 flash vector

var leaderboardRowVOs:Vector.<LeaderboardRowVO> = new Vector.<LeaderboardRowVO>();

作为Object进入系统的另一部分,我试图将其转换回实际类型

notification.getBody() as Vector.<LeaderboardRowVO> //throwing error

2 个答案:

答案 0 :(得分:1)

AS3中有两种类型转换方法:

// Casting
// 1: returns null if types are not compatible, 
//    returns reference otherwise
notification.getBody() as Vector.<LeaderboardRowVO>

// Converting    
// 2: throws exception if types are not compatible, 
//    returns reference otherwise
Vector.<LeaderboardRowVO>(notification.getBody())

案例1不会抛出错误,如果您有这样的行为,notification.getBody()方法中必定存在错误。

编辑: @divillysausages就案例2实际创建另一种类型的对象做了一个聪明的评论。这不是这种情况。这是本机类型的主要发生,但有一个例外:Array类。一些本机类具有顶级转换功能。有关它们的完整列表,请参阅adobe livedocs。通过将适当类型的 Array 传递给Vector()函数,可以通过这种方式实例化Vector。

答案 1 :(得分:0)

您的类中的Vector必须发生其他事情,因为将矢量转换为Object然后再转换为Vector是有效的。这个简单的测试显示了它:

var v:Vector.<int> = new Vector.<int>();
v.push(1);
v.push(2);

var o:Object = v as Object;

var v2:Vector.<int> = o as Vector.<int>;

trace(v2[0]); // Output "1"
trace(v2[1]); // Output "2"

所以你的问题必须在其他地方。