« VC++ランタイムがないときのエラー | Flex の Module 開発 (2) - ロード側 »

Flex の Module 開発 (1)

Flex SDK 2.0.1 以降からは Flex のモジュール開発がサポートされています。モジュール化することにより、初期ロードサイズを削減したり、開発時のカプセル化が促進されます。

モジュールを利用する側のアプリケーションのことを「シェル」と呼びます。シェルでは任意のタイミングでモジュールをロードすることができます。一度ロードしたモジュールはメモリ上にキャッシュされるため、2回目以降は高速にインスタンス化できます。いらなくなればキャッシュの削除を行うこともできます。

モジュール開発についての現時点での日本語の情報源は Flex 開発ガイド の「31章 モジュール化アプリケーションの作成」以外にはあまり見当たりません。

ここからは数回にわたり、Module を利用した開発手法について解説していきます。

MXML を利用したモジュール開発

まずは、MXML を利用したモジュールの開発です。ルートタグに <mx:Module> を指定します。

以下はその一例です。

<?xml version="1.0" encoding="utf-8"?>
<!--MyModuleA.mxml-->
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml"
    implements="IMyModule" >

    <mx:Script>
        <![CDATA[
            [Bindable]
            public var moduleText:String;
            
            public function setText(text:String):void
            {
                moduleText = text;
            }
        ]]>
    </mx:Script>
    
    <mx:Label text="ModuleA: {moduleText}" color="blue" fontSize="24"/>

</mx:Module>

この MXML では IMyModule を実装しています。IMyModule は、自分で定義した setText メソッドをもつインターフェースです。

// IMyModule.as
package
{
    public interface IMyModule
    {
        function setText(text:String):void;
    }
}

通常の Flex のビルド手順と同じようにして MyModuleA.mxml をビルドすると、MyModuleA.swf が生成されます。この SWF は単独で実行しても何も表示されません。シェルからロードしたときのみ表示されます。

ActionScript を利用したモジュール開発

では、ActionScript でモジュールを作成してみましょう。MXML のときと同様に、Module クラスを継承して実装します。

// MyModuleB.as
package
{
import mx.controls.Label;
import mx.core.Application;
import mx.modules.Module;

public class MyModuleB extends Module implements IMyModule
{
    private var _label:Label;
    
    public function MyModuleB()
    {
        _label = new Label();
        _label.setStyle("color", "#ff0000");
        _label.setStyle("fontSize", 24);
        addChild(_label);
        setText("");
    }

    public function setText(text:String):void
    {
        _label.text = "ModuleB: " + text;
    }
}
}

コンパイルすると MyModuleB.swf が生成されます。こちらのソースコードでも IMyModule インターフェースを実装しています。

次回予告

2通りの方法でモジュールを作成するところまで見てきました。

次回はモジュールをロードする「シェル」のソースコードを作成していきます。

2007-2009 CO-CONV,Corp

ブログ内に記載されている社名および製品名は各社の商標または登録商標です。