SWFの複製 – Flex

Loaderクラスを使って外部SWFをロードするサンプルはたくさんありますが、今回はLoaderとByteArrayを利用してStageにロード済みのSWFを複製します。

ここで肝になるのはLoaderInfoクラスです。

LoaderInfo クラスは、ロードされる SWF ファイルやイメージファイル (JPEG、GIF、PNG ファイルなど) に関する情報を提供します。LoaderInfo オブジェクトは、すべての表示オブジェクトで使用できます。提供される情報には、ロードの進行状況、ロードする側とロードされたコンテンツの URL、メディアの総バイト数、メディアの規格高さと幅などが含まれます。

複製の手順は以下の通りです。
1. DisplayObject(SWFやロードされたImage)のloaderInfoプロパティからバイト情報を取得(ByteArrayに格納)
2. Loader.loadBytes()でそのバイト情報を読み込む
3. LoaderオブジェクトのcontentLoaderInfoプロパティにアクセスしてロード状況を監視
4. ロードが完了したらLoaderをaddChild

バイト情報を取得するには、loaderInfo.bytesで取得できます。
ただし、FlashPlayerのバージョンが9.0.115.0からじゃないと使えないので注意!
Flex2のリファレンスには載ってませんでした。なのでFlex3.0以降で。

下の図にもあるように、LoaderInfoオブジェクトは、ロードされたオブジェクトファイルとロードした Loader オブジェクト間で共有されているようです。

ロードされたSWFの複製をFlexで行う場合の例を以下に示します。

(Flashが表示されない場合はこちら→duplicate.swf)

あわせて読む:

コメントを残す

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