2011-01-28 2 views
2

この例では、2つのクラス、EntityとCSpawnerを使用します。 CSpawnerはエンティティの子です。作成するクラスが別のクラスの子であるかどうかを確認します

私は、次の条件を実行したい:

if((new CSpawner()) is Entity) 

それは意図しただけのように動作します。

しかし、私は、新しいCSpawnerオブジェクトを作成することなく、このような何か、このテストをしたい:CSpawnerがクラスであるため、

if(CSpawner is Entity) 

をしかし、それは動作しません。

新しいCSpawnerオブジェクトを作成せずにこのような条件を実行するにはどうすればよいですか?

+0

「子供」とはなんですか?あなたはサブクラスを意味しますか?クラス内のオブジェクトですか? – Taurayi

+0

サブクラス。/15chars –

+0

CSpawnerがエンティティであるかどうかチェックする必要があるのはなぜですか?コンパイルする前に、CSpawnerがエンティティ以外の他のクラスに拡張するクラスを編集する予定ですか?なぜなら、CSpawnerがコンパイル時にEntityを拡張すると、Entityが常に拡張され、チェックが不要になるからです。 – Jordan

答えて

1

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#getQualifiedSuperclassNameは()あなたが探しているものです。 スーパークラス名を返します utilsパッケージから他のメソッドを確認できます - これはActionScriptの基本的な反映です:)

+0

これはうまくいきますが、CSpawnerがEntityの子である別のクラスの子である場合はどうなりますか? –

+0

Object: –

+0

が遅くなっていますが、ここでは最速のものですから、受け入れるつもりです。 –

2

flash.utilパッケージのdescribeType()関数を見てください。これは、探しているデータの種類(インスタンスオブジェクトとクラスオブジェクトの両方)を提供します。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#describeType()

+0

+1しかし、それはXMLオブジェクトを生成し、私はそれが非常に遅いと思うクラスを拡張するかどうかを見つけるためにそれをループする必要がある、私はあまりにも多くのパフォーマンスを要しないソリューションが必要です。 –

+0

flash.utilパッケージを見てください。他の解決方法があれば、そこにあるメソッド/クラスに依存します。私が知る限り、describeTypeを使用するソリューションには、より高速な代替手段はありませんが、私は単に発見するために時間を費やすことはできません。がんばろう。 –

関連する問題