0

你好,我有这段代码,它必须做的是当有一些类(总是扩展 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;
    }

如果我尝试此代码,它会生成以下错误:

Implicit coercion of a value of type com.shapes:Box to an unrelated type Class.
Implicit coercion of a value of type Class to an unrelated type com.shapes:Box

我该如何解决这个问题,以便我可以创建不同类型的类,这些类都扩展了 Box 类并将它们放入Vector.<Box>?

4

2 回答 2

1

Object 是所有 ActionScript 类的超类,而不是 Class。

此外,您还可以:

var box:Object = new Box();

但你不能:

var box:Box = new Object();
于 2012-10-14T18:48:12.630 回答
0

就像 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;
}
于 2012-10-15T13:33:06.667 回答