【问题标题】:AS3 - Find the base class of a sub classAS3 - 查找子类的基类
【发布时间】:2011-04-14 19:05:13
【问题描述】:
我有一个程序,其中有多个从基类派生的类。我想获取不同子类的所有实例并将它们放入一个数组中。有没有办法可以搜索从基类派生的任何东西?
例如,现在获取孩子的数量,然后看看他们是什么,所以:
for (var i = 0; i < this.getNumChildren(); i++)
{
if (i is "type")
objectArray.push(i);
}
type 在哪里,我需要它引用实例的基类,而不是创建实例的子类。
【问题讨论】:
标签:
flash
actionscript-3
class
inheritance
【解决方案1】:
"Object is Type" 将为子类和基类返回 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 ) {
}
}
}
【解决方案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 类型祖先的对象。
这是你问的吗?如果不是,请澄清。我不清楚您是在问如何获取基类,还是您只是误解了 is 运算符的工作原理。如果您在创作时就知道超类名称,为什么不直接用它代替“类型”?