【Adobe AIR】 ライブラリを作ってコンポーネントを使う

以前に、Adobe Airでライブラリを作ってコンポーネントを使うテストプログラムを作ってた。
残しとこう!

 

「SampleLibrary」Flexライブラリプロジェクトを作成。
(「Adobe AIRライブラリを含める」にチェックをつける)

「net/flarevanish」フォルダを作成。
「SampleButton.mxml」MXMLコンポーネントを作成。
「SampleWindow.as」ActionScriptクラスを作成。
SampleLibrary
 ┣bin
 ┗net
   ┗flarevanish
     ┣SampleButton.mxml
     ┗SampleWindow.as

 

SampleButton.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Button xmlns:mx="http://www.adobe.com/2006/mxml" label="Button Component" click="submit()">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
        
            private function submit():void {
                Alert.show("ボタンコンポーネントから呼び出されました。\n押されたボタンは" + this.id + "です。");
            }
        ]]>
    </mx:Script>
</mx:Button>

 

SampleWindow.as


package net.flarevanish
{
    import mx.core.WindowedApplication;
    import mx.controls.Alert;

    public class SampleWindow extends WindowedApplication
    {
        public function SampleWindow()
        {
            super();
        }
        
        public function putMessage(msg:String):void {
            Alert.show(msg);
        }
        
    }
}

SampleLibrary右クリックプロパティのFlexライブラリビルドパスで、ライブラリに含めるクラスに、使いたいクラスをチェックする。
SampleLibraryプロジェクトをビルドする。

 

「SampleUseLibrary」プロジェクトを作成。
SampleUseLibrary
 ┗src
   ┣SampleUseLibrary.mxml
   ┗SampleUseLibrary-app.xml

 

「SampleUseLibrary」プロジェクトを右クリックしてプロパティ。
Flexビルドバスで「プロジェクトの追加」からSampleLibraryを追加。

SampleUseLibrary.mxml

<?xml version="1.0" encoding="utf-8"?>
<this:SampleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:this="net.flarevanish.*">
    <this:SampleButton x="10" y="10" id="button1" label="ボタン1"/>
    <this:SampleButton x="10" y="40" id="button2" label="ボタン2" click="click()"/>
    <mx:Script>
        <![CDATA[
            private function click():void {
                this.putMessage("SampleWindowに登録されているメソッドが呼び出されました。");
            }
        ]]>
    </mx:Script>
</this:SampleWindow>

「ボタン1」をクリックした時。

「ボタン2」をクリックした時。

「Adobe AIRライブラリを含める」にチェックをつけないと、AIR用に拡張された
クラスをコンポーネントの継承元として指定できないみたい。

SampleButtonコンポーネントのclickイベントを、コンポーネントを使ってる方で
再定義させたら、コンポーネントで
定義されてる方が呼び出されて、次に再定義された方が先に呼び出されるっぽい。
(よーく見ると、裏で、もうコンポーネントのclickイベントで処理されているAlertがある)
んじゃー、まったく同じメソッド名で再定義させたらどうなんだろー で、やってみたら、
先に述べた呼び出され方とまったく一緒。
まースコープもprivateだし、オーバーライドされるわけではない、と。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です