2011-11-16 94 views
1

我目前被Vector类困惑。 我写了一个漂亮的XML给TypedClass解析器。精美的工作,没有错。 UNTIL一位同事注意到我们得到了Vector.<Number> to Vector.<*>的转换错误。Actionscript 3矢量数不扩展矢量*

每个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> 

但是当我使用的describeType上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> 

现在我已经占了这3个向量作为单独甚至UINT和INT不会扩展Vector.<Number>因为我本来期望。 而我的解析函数再次正确地适用于所有类型。但是我的困惑是为什么这是事实,为什么我找不到关于这个主题的任何文档。

回答

1

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

如果我还记得正确的话,Vector.<Number>Vector.<int>Vector.<uint>(但不BooleanString,奇怪的是)类做成尽可能快,所以它们被写入并作为单独的类被处理Flash播放器。

如您所知,其他所有矢量类扩展Vector.<*>和类型检查不同做了一些(这就是为什么载体是使用int,uint和Number速度较快,但数组是稍快于所有其他类)


无论如何,那是为什么。至于如何解决这个问题,恐怕你将不得不通过你的载体如无类型你想使用它的功能:

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

有趣。我认为这是由于原始类型造成的,但它看起来好像[字符串和布尔值也属于该类别。](http://help.adobe.com/zh_CN/as3/learn/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f9c.html# WS5b3ccc516d4fbf351e63e3d118a9b90204-7f88) –

+0

嗯,从技术上说,我的函数需要一个类,然后测试该类是否为'Vector'类型。当然,Vector的Number和其他任何东西实际上都属于它,但是当我尝试将其传递给我为Vector设置的变量的类的新实例分配给它时。 “我曾经大败过。正如我在问题中所说的那样,我已经解释了这一点。我们很少使用Vector。 ',只是很讨厌,我不得不单独解释它们。这很好,很整洁。 :-( – WORMSS