我有一个矢量实例,我用Flash Player 10 / 10.1导出swf。
我想用参数类型初始化它。我尝试如下:
var someType:Class = MyCustomClass;
var v:Vector.<someType> = new Vector.<someType>();
但它不起作用!!有办法做到这一点?
我希望问题很清楚:-)
提前致谢!
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.
杰森是对的。你不能这样做。对不起。我不久前遇到了同样的问题。
Dynamically instantiate a typed Vector from function argument?
糟透了,不是吗? :-)