AS3 проверить, расширяет ли класс другой класс - PullRequest
1 голос
/ 29 октября 2010

В AS3 я пытаюсь проверить, является ли объект экземпляром определенного класса или расширяет его.Использование что-то вроде if (object is ClassName) работает нормально, если объект является экземпляром ClassName, но не если это экземпляр класса, который расширяет ClassName.

Пример псевдокода:

class Foo {}
class Bar extends Foo {}

var object = new Bar();

if (object is Foo){ /* not executed */ }
if (object is Foo){ /* is executed */ }

Я хочу что-то вроде:

class Foo {}
class Bar extends Foo {}

var object = new Bar();

if (object is Foo){ /* is executed */ }

Есть идеи у кого-нибудь?

Ответы [ 4 ]

5 голосов
/ 29 октября 2010
package {
 import flash.display.Sprite;



public class Main extends Sprite {
  public function Main() {
   var bar:Bar=new Bar();
   trace("bar is Bar",bar is Bar);//true
   trace("bar is Foo:",bar is Foo);//true
   trace("bar is IKingKong:",bar is IKingKong);//true
   trace(describeType(bar));
   //<type name="Main.as$0::Bar" base="Main.as$0::Foo" isDynamic="false" isFinal="false" isStatic="false">
   //<extendsClass type="Main.as$0::Foo"/>
   //<extendsClass type="Object"/>
   //<implementsInterface type="Main.as$0::IKingKong"/>
   //</type>
  }
 }
}
interface IKingKong{}
class Foo implements IKingKong{}
class Bar extends Foo{}
1 голос
/ 29 апреля 2012

Вы можете сделать это:

class Foo {}
class Bar extends Foo {}

var object = new Bar();

if (object as Foo != null) { /* is executed */ }
0 голосов
/ 29 октября 2010
package
{   
import flash.display.Sprite;
import flash.utils.getQualifiedSuperclassName;

public class Test extends Sprite
    {
    public function Test()
        {
        trace(getQualifiedSuperclassName(this)); //returns "flash.display::Sprite"
        }
    }
}
0 голосов
/ 29 октября 2010

Используя интерфейс или класс abtract, вы сможете это сделать

 var object:Foo = new Bar();
 if (object is Foo){ /* is executed */ }

 //or
 var object:IFoo = new Bar();
 if (object is IFoo){ /* is executed */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...