我有一个程序,其中有多个派生自基类的类。我想获取不同子类的所有实例并将它们放入数组中。有没有办法可以搜索从基类派生的任何内容?
例如,现在获得孩子的数量,然后看看他们是什么,所以:
for (var i = 0; i < this.getNumChildren(); i++)
{
if (i is "type")
objectArray.push(i);
}
在type是的地方,我需要它来引用实例的基类而不是创建实例的子类。
答案 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的祖先的所有对象。
这就是你问的问题吗?如果没有,请澄清。我不清楚你是在问如何获得基类,或者你只是误解了 运算符是如何工作的。如果您在创作时知道超类名称,为什么不把它替换为“类型”?