MovieClip.attachMovieで配置したインスタンスがButtonになる [Edit]

attachMovieはMovieClipを配置するメソッドのはず
MovieClip.attachMovieメソッドのシンタックスは、つぎのとおりです。

myMovieClip.attachMovie( idName, newName, depth [, initObject] )

引数idNameは、「ライブラリ内のムービークリップシンボルのリンケージ識別子」(Flash MX「ActionScript辞書」MovieClip.attachMovieの項)です。当然、このメソッドでステージに配置されるのは、MovieClipインスタンスのはず。それがButtonインスタンスになったりしたら、ビックリしますね。ところが、こんなマジックが、Flash MXでは簡単に実現できます(マギー司郎になった気分)。

まずは普通にムービークリップシンボルを用意
用意するのは、普通のムービークリップひとつです。MovieClip.attachMovieメソッドを使う条件として、シンボルにはリンケージ識別子を設定します。ここでは、「myMovieClipSymbol」としておきましょう。

ムービークリップシンボルを用意

インスタンスをButtonとして配置
「ライブラリ」パネルから、ムービークリップシンボルをひとつステージに配置します。ここからが、ミソです。「プロパティインスペクタ」で、このインスタンスの「タイプ」を「ボタンに」変更します。

インスタンスをButtonとして配置

準備はできました。後は、MovieClip.attachMovieメソッドを実行するスクリプトを記述するだけです。

MovieClip.attachMovieメソッドを実行するとあら不思議
Buttonに変更したインスタンスを配置したフレームに、MovieClip.attachMovieメソッドを実行するスクリプトを記述します。

// メインのタイムライン
// フレームアクション
_root.attachMovie("myMovieClipSymbol", "my_mc", 1);

MovieClip.attachMovieメソッドを実行するスクリプトを記述

「ムービープレビュー」を実行したうえで、[デバッグ]メニューから[変数のリストアップ]を選択してみましょう。「出力」ウィンドウに、つぎのような表示が見つかるはずです。

// 出力ウィンドウの結果
ボタン: ターゲット="_level0.my_mc"

MovieClip.attachMovieメソッドで配置されたインスタンスmy_mcが、ボタンとして認識されているのです。実際、マウスポインタをインスタンス上に重ねると、指先のカーソルに変わります。

MovieClipインスタンスとして配置するためには
実験としては、面白い結果です。でも、実際のムービーでこんな現象が発生したら、迷惑極まりないでしょう。回避方法を、最後にご説明します。

「ライブラリ」パネルから、インスタンスをひとつMovieClipのまま配置します。場所は、ステージ外でも構いません。これだけで、Buttonインスタンスも置いたままで、正しくMovieClipがattachMovieメソッドにより配置されます。

_____

作成者: 野中文雄
作成日: 2003年1月24日

コメント

この記事へのコメント

  1. 1.野中 文雄(2004年04月11日 15:27)

    Flash MX 2004/MacOS X & Windows XPでも、再現が確認されました。

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事