リンケージ設定された[ライブラリ]のMovieClipシンボルは、SWFに関連づけられるようです。
つまり、外部SWFファイルを読込んだとき、ロード対象のMovieClipインスタンスをターゲットにしてMovieClip.attachMovie()メソッドを呼出すと、引数に渡したリンケージ識別子はそのSWFファイルの[ライブラリ]に設定されていなければなりません。
以下のような手順でサンプルムービーを作成して、MovieClip.attachMovie()メソッドの動作を確かめてみましょう。
手順
図001■ふたつのファィルにそれぞれリンケージ[識別子]の設定されたMovieClipシンボルを作成
スクリプト001■外部SWFのロードとMovieClip.attachMovie()メソッドのテスト
// fla(swf)ファイル: main.fla
// タイムライン: メイン
// 第1フレームアクション
// 外部SWFファイルをロードするMovieClipインスタンスの生成
var _mc:MovieClip = createEmptyMovieClip("my_mc", this.getNextHighestDepth());
_mc._x = Stage.width/2;
_mc._y = Stage.height/2;
// リスナーオブジェクト生成
var _mcl:MovieClipLoader = new MovieClipLoader();
var oListener:Object = new Object();
// 外部SWFロード完了時のコールバック関数設定
oListener.onLoadInit = function(target_mc:MovieClip):Void {
var temp_mc:MovieClip;
// 読込み元メインタイムラインをターゲットにattachMovie()を呼出す
temp_mc = attachMovie("oval", "oval0_mc", getNextHighestDepth());
temp_mc._alpha = 50;
temp_mc = attachMovie("rectangle", "rectangle0_mc", getNextHighestDepth());
temp_mc._alpha = 50;
// ロードされたMovieClipをターゲットにattachMovie()を呼出す
temp_mc = target_mc.attachMovie("oval", "oval1_mc", target_mc.getNextHighestDepth());
temp_mc._alpha = 50;
temp_mc = target_mc.attachMovie("rectangle", "rectangle1_mc", target_mc.getNextHighestDepth());
temp_mc._alpha = 50;
};
_mcl.addListener(oListener);
_mcl.loadClip("sub.swf", _mc);
ロード元"main.swf"のメインタイムラインと、"sub.swf"がロードされたMovieClipインスタンスを各ターゲットとして、MovieClipシンボルの"oval"と"rectangle"をそれぞれMovieClip.attachMovie()メソッドで配置しようとしました。
しかし4つの呼出しのうち、ロード元メインタイムラインをターゲットとしたときは"main.swf"の[ライブラリ]に設定した"oval"のみ(oval0_mc)、"sub.swf"を読込んだMovieClipインスタンスがターゲットのときは"rectangle"のみ(rectangle1_mc)しか、インスタンスは生成されませんでした(図002)。
図002■ロード元タイムラインとロード対象インスタンスそれぞれにMovieClip.attachMovie()を実行
よって、リンケージ設定された[ライブラリ]のシンボルは、SWFファイルに関連づけられると考えられます。つまり、外部SWFファイルを読込んだ場合、ロード対象のMovieClipインスタンスをターゲットにしてMovieClip.attachMovie()メソッドを呼出すと、引数に渡したリンケージ識別子はその外部SWFファイル内で検索されるようです。
したがって、MovieClip.attachMovie()メソッドのターゲットに指定したSWFの[ライブラリ]内に、引数のリンケージ[識別子]を設定したMovieClipシンボルが存在しなければなりません。
[関連情報]
FLASH-japan「loadClipしたMCにattachMovieをしても表示されない」
FumioNonaka.com「共有シンボルのインスタンスがattachMovie/attachSoundで作成できない」
Flashcoders「attachMovie fails on embedded clip in a movie, why?」