2016-12-01 9 views
1

ActionScriptでクラスのDefaultPropertyメタデータを取得しようとしていますが、メタデータXMLにDefaultPropertyの記述が見つかりません。ここ実行時にDefaultPropertyメタデータを取得する方法はありますか?

var describedTypeRecord:DescribeTypeCacheRecord = mx.utils.DescribeTypeCache.describeType(BorderContainer); 
var typeDescription:* = describedTypeRecord.typeDescription; 

XMLが長いですが、それが返す最初のノード:

<type name="spark.components::BorderContainer" base="spark.components::SkinnableContainer" isDynamic="false" isFinal="false" isStatic="false"> 

のBorderContainerまたはSkinnableContainerのデフォルトのプロパティがmxmlContentFactory次のとおりです。

私は、次のコードを使用しています

[DefaultProperty("mxmlContentFactory")] 

リッチテキストも試しました。これのデフォルトのプロパティは「コンテンツ」です。

[DefaultProperty("content")] 

メタデータにはこれに関する情報は表示されません。

-keep-as3-metadata+=DefaultProperty 
+0

リッチテキスト用にdefaultPropertyメタデータを取得しています。 <メタデータ名= "DefaultProperty"> mxmlContentFactoryはSkinnableContainer用DefaultPropertyであり、それはSkinnableContainerのために生成されたXMLではありませんのBorderContainer – Sumit

+0

うんためにそれを示しています。スーパークラスで宣言されることもあります。私は親クラスを歩き、それを見つけるためにそれぞれをチェックしなければならなかった。 –

答えて

0

これは、いくつかのクラスに設定されていませんが、それが定義されている場合、それは、スーパークラスで定義されます:私は、コンパイラの引数が含まれているコンパイラオプション

私はのBorderContainerをチェックしていたが、それはSkinnableContainerに定義されました:

<metadata name="DefaultProperty"> 
    <arg key="" value="mxmlContentFactory"/> 
</metadata> 

それはメインクラスで定義されていたとき、私は作品を掲載しているコード。クラスにデフォルトのプロパティがない場合は、すべてのスーパークラスのリストを取得し、オブジェクトまたはUIComponentに到達するまで各クラスをチェックします。

関連する問題