私はフレックスメタデータを調べましたが、それは単純明快なようです。問題がありますが、メタデータのオートコンプリートが得られません。
私がしたことをお話しします、多分あなたはエラーを見つけます。MyStyleなどの名前の独自のStyleメタデータタグを作成したいと思います。メタデータが自分によって追加されたのか、フレックスフレームワークによって追加されたのかを実行時に判断する方が簡単なので、自分で作成したいと思います(したがって、事前定義されたスタイルメタデータタグは使用しません)。
メタデータを追加するのは非常に簡単です。これを機能させるために次のコードを記述しました。
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
width="1024" height="768">
<fx:Metadata>
[MyStyle(required="true")]
</fx:Metadata>
</s:Group>
WindowedApplicationコンポーネントで、ステージリスナーに追加されたものをステージに追加しました。したがって、アプリケーションに追加されたすべての要素は、ステージに追加されたときにそのEvent.ADDEDを起動します。そのeventHandlerで、追加された要素をスキャンしてメタデータタグを探します。
protected function addedToStageListener(event:Event):void
{
var classInfo:XML = describeType(event.target);
for each (var x:XML in classInfo..metadata)
{
if (x.@name == "MyStyle")
trace(x);
}
}
また、flex-config.xmlファイル(srcフォルダーのトップレベル)を追加してコンパイラーオプションを追加し、実行時にカスタムメタデータタグを読み取れるようにしました。ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<flex-config>
<compiler>
<keep-as3-metadata>
<name>MyStyle</name>
</keep-as3-metadata>
</compiler>
</flex-config>
これを実行すると、期待する結果が得られます
<metadata name="MyStyle">
<arg key="required" value="true"/>
</metadata>
したがって、これは機能します。次のステップは、メタデータタグをコードに追加するときにオートコンプリートを追加することでした。これを行うには、メタデータタグを指定するmetadata.xmlを作成する必要がありますか?だから私はこれを行い、この単純なmetadata.xmlになりました
<?xml version="1.0" encoding="UTF-8"?>
<annotations version="2.1.1">
<metadata name="MyStyle" description="Adds style.">
<context name="class" />
<attribute name="required" type="Boolean" required="true" />
</metadata>
</annotations>
メタデータ.xmlをプロジェクトに正しく追加するために、Adobeによるそのチュートリアルに従いましたが、機能しません。オートコンプリートが取得できません。何か提案はありますか?
更新: Flash Builder 4.6 Professionalを使用し、Flexライブラリプロジェクトを作成しました。