アセットクラスの埋め込み

ActionScript 3.0 では、埋め込みアセットを表現するために、埋め込みアセットクラスと呼ばれる特別なクラスを使用します。"埋め込みアセット" は、コンパイル時に SWF ファイルに含まれるサウンド、イメージ、フォントのようなアセットです。アセットを動的にロードするのではなく埋め込むと、実行時に利用可能になることが保証されますが、SWF ファイルのサイズは大きくなってしまいます。

Flex での埋め込みアセットクラスの使用

アセットを ActionScript コードに埋め込むには、[Embed] メタデータタグを使用します。プロジェクトのビルドパスにあるメインソースフォルダまたは別のフォルダ内にアセットを配置します。Embed メタデータタグを見つけると、Flex コンパイラは埋め込みアセットクラスを作成します。[Embed] メタデータタグの直後で宣言した Class データ型の変数を通してクラスにアクセスすることができます。たとえば、次のコードは sound1.mp3 という名前のサウンドを埋め込み、soundCls という名前の変数を使用して、そのサウンドに関連付けられた埋め込みアセットクラスへの参照を格納します。この例では次に、埋め込みアセットクラスのインスタンスを作成し、そのインスタンス上で play() メソッドを呼び出します。

<<下のサンプルコードは、FlexOnly+No Trans に対して二重条件となっています。FlexOnly for Flex 2.0.1 loc prodeuction を削除する必要がありました。本マニュアルは Flex 2.0.1 のものなので、Flash-MN では使用できません。>>

package
{
    import flash.display.Sprite;
    import flash.media.SoundChannel;
    import mx.core.SoundAsset;

    public class SoundAssetExample extends Sprite
    {
        [Embed(source="sound1.mp3")]
        public var soundCls:Class;
        
        public function SoundAssetExample()
        {
            var mySound:SoundAsset = new soundCls() as SoundAsset;
            var sndChannel:SoundChannel = mySound.play();
        }
    }

}

ヒント

 

[Embed] メタデータタグを Adobe Flex Builder 2 の ActionScript プロジェクトで使用するには、Flex フレームワークから必要なクラスを読み込む必要があります。たとえば、サウンドを埋め込むには、mx.core.SoundAsset クラスを読み込む必要があります。Flex フレームワークを使用するには、"framework.swc" ファイルを ActionScript ビルドパスに含めます。このため、SWF ファイルのサイズは大きくなります。

代わりの方法として、MXML タグ定義の @Embed() ディレクティブでアセットを埋め込むことができます。詳細については、『Flex 2 開発ガイド』の「アセットの埋め込みについて」を参照してください。


Flex 2.01