AS3 - 查找子类的基类

时间:2011-04-14 19:05:13

标签: flash actionscript-3 class inheritance

我有一个程序,其中有多个派生自基类的类。我想获取不同子类的所有实例并将它们放入数组中。有没有办法可以搜索从基类派生的任何内容?

例如,现在获得孩子的数量,然后看看他们是什么,所以:

for (var i = 0; i < this.getNumChildren(); i++)
{
    if (i is "type")
        objectArray.push(i);
}

在type是的地方,我需要它来引用实例的基类而不是创建实例的子类。

2 个答案:

答案 0 :(得分:3)

“Object is Type”将为SubClass和BaseClass返回true:

示例:

for (var i = 0; i < this.getNumChildren(); i++) {
    var c:* = this.getChildAt(i);
    if ( c is BaseClass ) {
        //true for both SubClass1 and SubClass2 instances
        objectArray.push(c);
        if ( c is SubClass1 ) {

        }
        else if ( c is SubClass2 ) {

        }
    }
}

答案 1 :(得分:2)

我猜你在问什么:让我们假设你在B类中有这个代码扩展了A类,你想要的是B类实例找出它自己的超类是什么(A类)在运行时。

以下是如何做到这一点:

// Get the name of the super class for this object
var superClassName:String = flash.utils.getQualifiedSuperclassName(this);

// Get a Class reference to that superclass
var superClass:Class = flash.utils.getDefinitionByName(superClassName) as Class;

在表达式中使用superClass代替“type”。这将允许类型B的实例查找共享类型A的祖先的所有对象。

这就是你问的问题吗?如果没有,请澄清。我不清楚你是在问如何获得基类,或者你只是误解了 运算符是如何工作的。如果您在创作时知道超类名称,为什么不把它替换为“类型”?