Actionscript 3 从字符串创建不同的类

Actionscript 3 从字符串创建不同的类,actionscript-3,flash,oop,Actionscript 3,Flash,Oop,您好,我有这段代码,它必须做的是当有某个类(总是扩展Box类)必须生成时,如果已经有一个与它加载的同一类型的类,并且如果没有,它将创建一个新类 private var _l:Vector.<Box> = new Vector.<Box>(); public function respawn(shapeId:int, className:String = "Box"):Class { var l:int = _l.length, i:int;

您好,我有这段代码,它必须做的是当有某个类(总是扩展Box类)必须生成时,如果已经有一个与它加载的同一类型的类,并且如果没有,它将创建一个新类

private var _l:Vector.<Box> = new Vector.<Box>();
public function respawn(shapeId:int, className:String = "Box"):Class {
        var l:int = _l.length, i:int;
        var c:Class;
        var ct:Class = getDefinitionByName(className) as Class;
        for (i = 0; i < l; i++) {
            c = _l[i];
            if (!c.active && c.shapeId == shapeId) {
                return c;
            }
        }
        c = new ct();
        _l[l] = c;

        return c;
    }

如何解决这个问题,以便创建不同类型的类,这些类都扩展了Box类,并将它们放入
向量中。

对象是所有ActionScript类的超类,而不是类

此外,你可以:

var box:Object = new Box();
但你不能:

var box:Box = new Object();

就像Max Golovanchuk说的,我必须瞄准对象,而不是类

public function respawn(shapeId:int, className:Class):Object {
    var l:int = _l.length, i:int;
    var c:Box;
    for (i = 0; i < l; i++) {
        c = _l[i];
        if (c.shapeId == shapeId) {
            return c;
        }
    }
    c = new className();
    _l[l] = c;

    return c;
}
public function respawn(shapeId:int,className:Class):对象{
var l:int=_l.length,i:int;
变量c:盒子;
对于(i=0;i
非常感谢,这确实是我用解决方案更新帖子时遇到的问题。您的声誉应该足够高,可以将此作为实际答案发布,而不是编辑您的问题。如果是这样的话,你可能应该这样做。。。
public function respawn(shapeId:int, className:Class):Object {
    var l:int = _l.length, i:int;
    var c:Box;
    for (i = 0; i < l; i++) {
        c = _l[i];
        if (c.shapeId == shapeId) {
            return c;
        }
    }
    c = new className();
    _l[l] = c;

    return c;
}