【问题标题】: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 运算符的工作原理。如果您在创作时就知道超类名称,为什么不直接用它代替“类型”?

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2014-03-13
      • 2023-03-04
      相关资源
      最近更新 更多