0

私はフレックスメタデータを調べましたが、それは単純明快なようです。問題がありますが、メタデータのオートコンプリートが得られません。

私がしたことをお話しします、多分あなたはエラーを見つけます。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ライブラリプロジェクトを作成しました。

4

0 に答える 0