As3矢量 参数类型

问题描述 投票:2回答:2

我有一个矢量实例,我用Flash Player 10 / 10.1导出swf。

我想用参数类型初始化它。我尝试如下:

var someType:Class = MyCustomClass;
var v:Vector.<someType> = new Vector.<someType>();

但它不起作用!!有办法做到这一点?

我希望问题很清楚:-)

提前致谢!

actionscript-3 vector
2个回答
3
投票

someType是类类型的实例;而Vector是该类型的容器。

这应该是:

var v:Vector.<MyCustomClass> = new Vector.<MyCustomClass>();

否则,我注意到Haxe将其编译为:

var v:Vector.<Object> = new Vector.<Object>();

缺少Flash多态性,如果你有A类和B类,并试图将它们推送到Class类型的向量,你会收到一个错误:

package
{
    import flash.display.Sprite;

    public class test extends Sprite
    {
        public function test()
        {
            var v:Vector.<Class> = new Vector.<Class>();

            var a:A = new A();
            var b:B = new B();

            v.push(a);
            v.push(b);
        }
    }
}

错误:

TypeError: Error #1034: Type Coercion failed: cannot convert A@43a2ff1 to Class.

1
投票

杰森是对的。你不能这样做。对不起。我不久前遇到了同样的问题。

Dynamically instantiate a typed Vector from function argument?

糟透了,不是吗? :-)

© www.soinside.com 2019 - 2024. All rights reserved.