外部の SWF ファイルのロード

Flash Player 9 以降、Adobe AIR 1.0 以降

ActionScript 3.0 では、Loader クラスを使用して SWF ファイルをロードします。 外部 SWF ファイルをロードするには、ActionScript で次の 4 つのタスクを実行する必要があります。

  1. ファイルの url により、新規 URLRequest オブジェクトを作成します。

  2. 新規 Loader オブジェクトを作成します。

  3. URLRequest インスタンスをパラメーターとして渡し、Loader オブジェクトの load() メソッドを呼び出します。

  4. Flash ドキュメントのメインタイムラインなどの表示オブジェクトコンテナで addChild() メソッドを呼び出し、表示リストに Loader インスタンスを追加します。

最終的に、コードは次のようになります。

var request:URLRequest = new URLRequest("http://www.[yourdomain].com/externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

これと同じコードを使用して、JPEG、GIF、PNG イメージなどの外部イメージファイルをロードできます。その際、SWF ファイルの url ではなく、イメージファイルの url を指定します。イメージファイルとは異なり、SWF ファイルには ActionScript を含めることができます。 このため、SWF ファイルをロードするプロセスがイメージのロードと同じでも、Flash Player または AIR で SWF ファイルを再生しており、ActionScript を使用して外部の SWF ファイルと何らかの通信を行う場合は、外部の SWF ファイルをロードするときに、ロードする SWF ファイルとロードされる SWF ファイルの両方が同じセキュリティサンドボックスに属している必要があります。また、ロードされる SWF ファイル内のクラスと同じ名前空間を使用するクラスが外部の SWF ファイルに含まれる場合には、名前空間の競合を避けるために、ロードされる SWF ファイル用に新しいアプリケーションドメインを作成する必要があります。 セキュリティとアプリケーションドメインの考慮事項について詳しくは、アプリケーションドメインの操作およびコンテンツのロードを参照してください。

正常にロードされた外部の SWF ファイルには、Loader.content プロパティを使用してアクセスできます。外部の SWF ファイルを ActionScript 3.0 用としてパブリッシュすると、拡張するクラスに基づいて、ムービークリップまたはスプライトのいずれかになります。

Adobe AIR for iOS と、その他のプラットフォームでは、SWF ファイルのロード方法に少々違いがあります。詳しくは、AIR for iOS での SWF ファイルのロードを参照してください。

従来の SWF ファイルをロードする際の注意事項

以前のバージョンの ActionScript を使用して外部 SWF ファイルをパブリッシュする場合には、制約事項に注意する必要があります。 AVM2(ActionScript Virtual Machine 2)で実行される ActionScript 3.0 の SWF ファイルと異なり、ActionScript 1.0 または 2.0 用としてパブリッシュされる SWF ファイルは AVM1(ActionScript Virtual Machine 1)で実行されます。

ActionScript 1.0 または 2.0 の SWF ファイルを ActionScript 3.0 の SWF ファイルにロードする場合には、(ActionScript 3.0 の SWF ファイルをロードする場合と比較して)重要な違いがあります。Flash Player には、以前にパブリッシュされたコンテンツとの完全な後方互換性があります。 旧バージョンの Flash Player で実行できるすべてのコンテンツは、ActionScript 3.0 をサポートするバージョンの Flash Player でも実行できます。ただし、次の制約があります。

  • ActionScript 3.0 のコードでは、ActionScript 1.0 または 2.0 で記述された SWF ファイルをロードできます。ActionScript 1.0 または 2.0 の SWF ファイルが正常にロードされると、ロードされたオブジェクト(Loader.content プロパティ)は、AVM1Movie オブジェクトになります。AVM1Movie インスタンスは、MovieClip インスタンスと同じではありません。 これは表示オブジェクトで、ムービークリップとは異なり、タイムラインに関連するメソッドまたはプロパティを含んでいません。 親 AVM2 SWF ファイルは、ロードされた AVM1Movie オブジェクトのプロパティ、メソッドまたはオブジェクトにアクセスできません。

  • ActionScript 1.0 または 2.0 で記述された SWF ファイルは、ActionScript 3.0 で記述された SWF ファイルをロードすることはできません。つまり、Flash 8 または Flex Builder 1.5以前のバージョンで作成された SWF ファイルは、ActionScript 3.0 で記述された SWF ファイルをロードできません。

    この規則には唯一例外があり、以前に ActionScript 2.0 SWF ファイルによってどのレベルにも何もロードされていなければ、ActionScript 2.0 SWF ファイル自体を ActionScript 3.0 SWF ファイルで置き換えることができます。 ActionScript 2.0 SWF ファイルは、loadMovieNum() の呼び出しによってこの置き換えを行い、値 0 を level パラメーターに渡します。

  • 一般に、ActionScript 1.0 または 2.0 で記述された SWF ファイルは、ActionScript 3.0 で記述された SWF ファイルと共に使用するには移行する必要があります。例えば、ActionScript 2.0 を使用してメディアプレーヤーを作成したとします。このメディアプレーヤーでは、ActionScript 2.0 を使用して作成された様々なコンテンツをロードできますが、ActionScript 3.0 で新しいコンテンツを作成して、このメディアプレーヤーにロードすることはできません。メディアプレーヤーを ActionScript 3.0 に移行する必要があります。

    ただし、ActionScript 3.0 でメディアプレーヤーを作成すれば、ActionScript 2.0 で作成されたコンテンツを簡単にロードできます。

次の表に、新しいコンテンツのロードおよびコードの実行に対する旧バージョンの Flash Player の制限について概要を示します。また、異なるバージョンの ActionScript で記述された SWF ファイル間のクロススクリプトの制限についても概要を示します。

サポートされる機能

Flash Player 7

Flash Player 8

Flash Player 9 および 10

ロード可能な SWF のパブリッシュ対象

7 以前

8 以前

9(または 10)以前

含まれている AVM

AVM1

AVM1

AVM1 および AVM2

実行可能な SWF の記述に使用される ActionScript

1.0 および 2.0

1.0 および 2.0

1.0、2.0、および 3.0

次の表の「サポートされる機能」は Flash Player 9 以降で実行するコンテンツを指します。Flash Player 8 以前で実行するコンテンツは、ActionScript 1.0 および 2.0 のみロード、表示、実行、クロススクリプトが可能です。

サポートされる機能

ActionScript 1.0 および 2.0 で作成されたコンテンツ

ActionScript 3.0 で作成されたコンテンツ

ロードしてコードを実行できるコンテンツの作成元

ActionScript 1.0 および 2.0 のみ

ActionScript 1.0、2.0、および ActionScript 3.0

クロススクリプト可能なコンテンツの作成元

ActionScript 1.0 および 2.0 のみ(ローカル接続を使用する ActionScript 3.0)

ローカル接続を使用する ActionScript 1.0 および 2.0

ActionScript 3.0