アセットを埋め込む場合は、アセットをアプリケーションの SWF ファイルにコンパイルします。アセットを埋め込む利点は、埋め込まれたアセットが SWF ファイル内にあるため、実行時に離れた場所からアセットをロードするよりも短時間でアクセスできることです。アセットを埋め込むことの短所は、実行時にアセットをロードする場合と比べ SWF ファイルのサイズが大きくなることです。
最も一般的な埋め込み方法は、MXML タグ定義内で @Embed() ディレクティブを使用して、Flex コントロールにイメージを読み込む方法です。例えば、多くのコントロールは、アプリケーションへの埋め込みが可能なアイコンまたはスキンをサポートします。Button コントロールでは、ラベルテキストや、オプションのアイコンイメージを指定できます。次の例を参照してください。
<?xml version="1.0"?>
<!-- embed\ButtonIcon.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Button label="Icon Button" icon="@Embed(source='logo.gif')"/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
もう 1 つの埋め込み方法は、[Embed] メタデータタグを使用して、埋め込みイメージを変数に関連付ける方法です。この方法では、次の例に示すように、アプリケーション内の複数の場所から埋め込まれたイメージを参照できます。
<?xml version="1.0"?>
<!-- embed\ButtonIconClass.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
[Embed(source="logo.gif")]
[Bindable]
public var imgCls:Class;
]]>
</mx:Script>
<mx:Button label="Icon Button 1" icon="{imgCls}"/>
<mx:Button label="Icon Button 2" icon="{imgCls}"/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
スタイルプロパティの場合は、Embed() ディレクティブを使用して、スタイルシート定義の一部としてアセットを埋め込むことができます。スタイルプロパティに対する一般的な使用方法の 1 つは、コンポーネントのスキンを設定する方法です。次の例に示すように、overSkin、upSkin、および downSkin のスタイルプロパティを使用することにより、Button コントロールのスキンを設定できます。
<?xml version="1.0"?>
<!-- embed\ButtonIconCSS.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Style>
.myCustomButton {
overSkin:Embed(source="overIconImage.gif");
upSkin:Embed(source="upIconImage.gif");
downSkin:Embed(source="downIconImage.gif");
}
</mx:Style>
<mx:Button label="Icon Button Style Def" styleName="myCustomButton"/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
アセットを埋め込むのではなく、実行時にアセットをロードすることもできます。SWF ファイルが実行されるローカルなファイルシステムからアセットをロードすることも、ネットワーク上の HTTP 要求を通じて(通常の方法)、リモートアセットにアクセスすることもできます。
イメージを埋め込んだ場合、埋め込まれたイメージは Flex SWF ファイルの一部となるので、ロードは直接的に行われます。ただし、アプリケーションのサイズが増えるので、アプリケーションの初期化プロセスは遅くなります。また、埋め込まれたアセットの場合、アセットに変更を加えるたびにアプリケーションを再コンパイルする必要があります。
実行時にアセットをロードした場合、対象のアセットは、Flex アプリケーションの一部としてコンパイルされるのではなく、独立したファイルとして Web サーバーなどに置かれます。アセットの参照により、アプリケーションの初期ロード時間に追加のオーバーヘッドが生じることはありません。ただし、Adobe® Flash® Player または Adobe® AIR™ でアセットを使用し、ロードするときに遅延が生じる場合があります。アセットは、Flex アプリケーションとは独立しているため、アセットの名前さえ同じであれば、修正を加えたとしても再コンパイルの必要はありません。
実行時にアセットをロードする例については、Image コントロールおよびSWFLoader コントロールを参照してください。
セキュリティのため、Flash Player のデフォルトでは、一部のタイプのリモートデータ(SWF ファイルなど)については、実行時にアプリケーションの提供ドメイン以外のドメインからアクセスすることが許可されません。したがって、データをホストするサーバーがアプリケーションをホストしているサーバーと同じドメインにあるか、またはサーバーが crossdomain.xml ファイルを定義する必要があります。crossdomain.xml ファイルは XML ファイルで、サーバーのデータとドキュメントをどのドメインの SWF ファイルが利用できるかを示します。特定のドメインを指定することも、すべてのドメインを指定することもできます。アプリケーションのセキュリティの詳細については、『』のFlex へのセキュリティの適用を参照してください。
Flex アプリケーションには、次のタイプのファイルを埋め込むことができます。
|
ファイルタイプ |
ファイル形式 |
MIME タイプ |
説明と用例 |
|---|---|---|---|
|
イメージ |
GIF |
image/gif |
|
|
.JPG、.JPEG |
image/jpeg |
||
|
PNG |
image/png |
||
|
SVG |
image/svg image/svg-xml |
||
|
Flash |
SWF |
application/x-shockwave-flash |
|
|
SWF ファイルに保存されたシンボル |
|||
|
オーディオ |
MP3 |
audio/mpeg |
|
|
フォント |
TTF(TrueType) |
application/x-font-truetype |
TBD |
|
FON(システムフォント) |
application/x-font |
||
|
それ以外のタイプ |
|
application/octet-stream |
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート