2011-03-23 35 views

回答

1

不,不按标准。如果这些项目不是主要类型之一,则可以创建接口向量或超类。例如,包含混合了动画片段和动画的DisplayObject的向量(它们都从DisplayObject继承)。

例如:

var v:Vector.<DisplayObject> = new <DisplayObject>[ 
    new MovieClip(), 
    new Sprite(), 
    new MovieClip() 
]; 

trace(v[0].alpha); // outputs 1 
trace(v[0].currentFrame); // error - not a DisplayObject property 

在这种情况下,矢量项只会暴露从该载体型干特性和本身的方法。但这正是你应该使用向量的原因,它确保你正在处理的项目类型。

我不知道你的具体情况或目标,但我会考虑你为什么需要一个向量中的混合类型。正如你所说,你的另一种选择是创建一个包装类。下面的例子远不是完整的,而是一个起点。

class Wrapper { 
    public var _value:*; // should be private with get/set's 

    public function Wrapper(value:*) { 
     if(value is String || value is Number) { 
      _value = value; 
     } 
    } 
} 
0

你不能做到这一点,所以我会同意你的建议,这是创建一个包含两个属性一类特殊的去(说的数字,字符串),并创建的一个载体。