メタデータタグの使用

Flex コンパイラは、ActionScript クラスファイルと MXML ファイル内のコンポーネントメタデータステートメントを認識します。メタデータタグは、コンポーネント属性、データバインディングプロパティ、イベント、およびコンポーネントのその他のプロパティを定義します。これらのステートメントは、Flex でコンパイル時に解釈されます。実行時には解釈されません。

メタデータステートメントは、クラス宣言、個々のデータフィールドまたはメソッドに関連付けられます。メタデータステートメントは、ファイル内でその次にある行にバインドされます。コンポーネントプロパティまたはメソッドを定義するときは、プロパティ宣言またはメソッド宣言の直前の行にメタデータタグを追加してください。

ActionScript ファイルでは、コンポーネントイベントを定義するときや、コンポーネント内で複数のプロパティに影響を与えるような要素を定義するときは、次の例に示すようにクラス定義の外側にメタデータタグを追加してください。これにより、メタデータがクラス全体にバインドされます。

// [Event] メタデータタグをクラスファイルの外側に追加する
[Event(name="enableChange", type=flash.events.Event)]
public class ModalText extends TextArea {

    ...

    // クラスプロパティとメソッドを定義する
    private var _enableTA:Boolean;

    // 個々のプロパティの前に [Inspectable] メタデータタグを追加する
    [Inspectable(defaultValue="false")]
    public function set enableTA(val:Boolean):void {
        _enableTA = val;
        this.enabled = val;
    
        // イベントオブジェクトを定義、初期化、および送出する 
        var eventObj:Event = new Event("enableChange");
        dispatchEvent(eventObj);
    }
}

この例では、クラス定義の前に [Event] メタデータタグを追加します。これによって、クラスはイベント enableChanged を送出します。また、enableTA プロパティが Flex Builder 内でアクセス可能であることを示す [Inspectable] メタデータタグも追加します。

次の例に示すように、MXML ファイルではメタデータタグを ActionScript コードと共に <mx:Script> ブロックに挿入するか、または <mx:Metadata> ブロックに挿入します。

<?xml version="1.0"?>
<!-- TextAreaEnabled.mxml -->
<mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Metadata>
        [Event(name="enableChange", type="flash.events.Event")]
    </mx:Metadata>

    <mx:Script>
        <![CDATA[

            // イベントクラスを読み込む
            import flash.events.Event;

            // クラスのプロパティとメソッドを定義する
            private var _enableTA:Boolean;

            // 個々のプロパティの前に [Inspectable] メタデータタグを追加する
            [Inspectable(defaultValue="false")]
            public function set enableTA(val:Boolean):void {
                _enableTA = val;
                this.enabled = val;
    
                // イベントオブジェクトを定義、初期化、および送出する 
                var eventObj:Event = new Event("enableChange");
                dispatchEvent(eventObj);
            }
        ]]>
    </mx:Script>
</mx:TextArea>

<mx:Metadata> タグと <mx:Script> タグの主な相違点は、<mx:Metadata> タグ内のテキストは生成されたクラス宣言の前に挿入されるのに対して、<mx:Script> タグ内のテキストは生成されたクラス宣言の本体に挿入されることです。したがって、[Event][Effect] などのメタデータタグは <mx:Metadata> タグ内に追加し、[Bindable][Embed] などのメタデータタグは <mx:Script> タグ内に追加します。


Flex 2

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/2_jp/docs/00001650.html