Actionscript 3矢量数不扩展Vector *

时间:2011-11-16 16:41:14

标签: actionscript-3 vector numbers standards

我目前对Vector课感到困惑。 我给TypedClass解析器写了一个漂亮的XML。工作精美,没有错。 UNTIL 一位同事发现我们收到了Vector.<Number> to Vector.<*>的转化错误。

我测试过的Vector Vector.<*>每个Vector.<Sprite>

Vector.<String>Vector.<Point>Vector.<Boolean>Vector.<TextField>Vector.<CustomObject><type name="__AS3__.vec::Vector.<String>" base="__AS3__.vec::Vector.<*>" isDynamic="true" isFinal="false" isStatic="false"> <extendsClass type="__AS3__.vec::Vector.<*>"/> <extendsClass type="Object"/> <accessor name="length" access="readwrite" type="uint" declaredBy="__AS3__.vec::Vector.<*>"/> <accessor name="fixed" access="readwrite" type="Boolean" declaredBy="__AS3__.vec::Vector.<*>"/> </type> 等等所有这些。

Vector.<Number>

但是当我在Vector.<uint>Vector.<int><type name="__AS3__.vec::Vector.<Number>" base="Object" isDynamic="true" isFinal="true" isStatic="false"> <extendsClass type="Object"/> <constructor> <parameter index="1" type="uint" optional="true"/> <parameter index="2" type="Boolean" optional="true"/> </constructor> <accessor name="length" access="readwrite" type="uint" declaredBy="__AS3__.vec::Vector.<Number>"/> <accessor name="fixed" access="readwrite" type="Boolean" declaredBy="__AS3__.vec::Vector.<Number>"/> </type> 上使用describeType时。

Vector.<Number>

现在我已经单独考虑了这3个向量,因为即使uint和int也没有像我预期的那样扩展{{1}}。 我的解析功能再次适用于所有类型。但是我的困惑是为什么会出现这种情况,为什么我找不到关于这个问题的任何文件。

1 个答案:

答案 0 :(得分:1)

几个月前我在Kirupa论坛上问了同样的问题,但我不能为我的生活找到线索。

如果我没记错的话,Vector.<Number>Vector.<int>Vector.<uint>(但不是BooleanString,奇怪的是) 尽可能快,因此Flash Player会将它们编写为单独的类。

正如您所注意到的,所有其他Vector类都扩展Vector.<*>并且类型检查的执行方式略有不同(这就是为什么使用int,uint和Number更快地使用Vector,但是对于所有其他类,数组的速度稍快一些)


无论如何,那是为什么。至于如何解决这个问题,我担心你必须将你的矢量作为无类型传递给你想要使用它的函数:

public function addItem(vector:*, item:*)
    { vector.push(item); }