attachMovieはMovieClipを配置するメソッドのはず
MovieClip.attachMovieメソッドのシンタックスは、つぎのとおりです。
myMovieClip.attachMovie( idName, newName, depth [, initObject] )
引数idNameは、「ライブラリ内のムービークリップシンボルのリンケージ識別子」(Flash MX「ActionScript辞書」MovieClip.attachMovieの項)です。当然、このメソッドでステージに配置されるのは、MovieClipインスタンスのはず。それがButtonインスタンスになったりしたら、ビックリしますね。ところが、こんなマジックが、Flash MXでは簡単に実現できます(マギー司郎になった気分)。
まずは普通にムービークリップシンボルを用意
用意するのは、普通のムービークリップひとつです。MovieClip.attachMovieメソッドを使う条件として、シンボルにはリンケージ識別子を設定します。ここでは、「myMovieClipSymbol」としておきましょう。
インスタンスをButtonとして配置
「ライブラリ」パネルから、ムービークリップシンボルをひとつステージに配置します。ここからが、ミソです。「プロパティインスペクタ」で、このインスタンスの「タイプ」を「ボタンに」変更します。
準備はできました。後は、MovieClip.attachMovieメソッドを実行するスクリプトを記述するだけです。
MovieClip.attachMovieメソッドを実行するとあら不思議
Buttonに変更したインスタンスを配置したフレームに、MovieClip.attachMovieメソッドを実行するスクリプトを記述します。
// メインのタイムライン
// フレームアクション
_root.attachMovie("myMovieClipSymbol", "my_mc", 1);
「ムービープレビュー」を実行したうえで、[デバッグ]メニューから[変数のリストアップ]を選択してみましょう。「出力」ウィンドウに、つぎのような表示が見つかるはずです。
// 出力ウィンドウの結果
ボタン: ターゲット="_level0.my_mc"
MovieClip.attachMovieメソッドで配置されたインスタンスmy_mcが、ボタンとして認識されているのです。実際、マウスポインタをインスタンス上に重ねると、指先のカーソルに変わります。
MovieClipインスタンスとして配置するためには
実験としては、面白い結果です。でも、実際のムービーでこんな現象が発生したら、迷惑極まりないでしょう。回避方法を、最後にご説明します。
「ライブラリ」パネルから、インスタンスをひとつMovieClipのまま配置します。場所は、ステージ外でも構いません。これだけで、Buttonインスタンスも置いたままで、正しくMovieClipがattachMovieメソッドにより配置されます。
_____
作成者: 野中文雄
作成日: 2003年1月24日
この記事へのコメント
●1.野中 文雄(2004年04月11日 15:27)
Flash MX 2004/MacOS X & Windows XPでも、再現が確認されました。