2010-10-29 57 views
1

在AS3中,我试图检查一个对象是否是一个实例,或者扩展了一个特定的类。如果对象是ClassName的实例,则使用诸如if (object is ClassName)之类的东西可以很好地工作,但如果它是延伸的类的实例ClassName,则不能正常工作。AS3检查类是否扩展了另一个类

伪代码示例:

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 */ } 

任何想法吗?

+1

好,它为我工作。 ..这是遗产应该发生的事......酒吧是一个富... ...?不是? – OXMO456 2010-10-29 09:42:47

+0

在这种情况下,有没有办法列出当前类扩展的所有类?例如:在PHP中,您可以调用'class_parents($ object)'来检索父类数组。 – Rowan 2010-10-29 10:23:09

+0

是/否,使用describeType,你会得到一个描述Objet的XML,我已经更新了我的答案...... – OXMO456 2010-10-29 12:40:17

回答

5
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{} 
+0

谢谢,我可能会在此基础上编写一个实用函数。看起来这和我要得到的一样接近! – Rowan 2010-10-29 20:15:17

0

使用一个接口或abtract类,你应该能够做到这一点

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

//or 
var object:IFoo = new Bar(); 
if (object is IFoo){ /* is executed */ } 
0
package 
{ 
import flash.display.Sprite; 
import flash.utils.getQualifiedSuperclassName; 

public class Test extends Sprite 
    { 
    public function Test() 
     { 
     trace(getQualifiedSuperclassName(this)); //returns "flash.display::Sprite" 
     } 
    } 
} 
1

你可以这样做:

class Foo {} 
class Bar extends Foo {} 

var object = new Bar(); 

if (object as Foo != null) { /* is executed */ } 
相关问题