連載: 2007年12月アーカイブ

しばらくほったらかしにしてましたが、そろそろムービークリップについて少し触れておこうと思います。

まずは新規ファイルを作成して、パブリッシュ設定の「ActionScript のバージョン」を "ActionScript 2.0" に設定しておきます。

ステージ上に下図のように "rect" というムービークリップを作成します。
今回「基準点」は左上に設定しておきます。


次にインスタンス名も同じく "rect" と設定します。


タイムラインは以下のようになっています。

レイヤー "rect" は、ムービークリップ"rect"のみを配置しています。
レイヤー "@root" はこれからActionScriptを書き込むレイヤーです。

次回からムービークリップの話をするときは、これを基に進めていきますので頭の隅っこの方にでも置いておいてください。

レイヤー "@root" に以下のスクリプトを書いてみます。
trace( _root );
Ctrl + Enter(Command + return)でプレビューしてみると、出力パネルに "_level0" と出力されました。
"_root" は、このムービーの一番上の階層を指定する場合に用います。
次に以下のように変更してもう一度プレビューしてみましょう。
trace( rect );
今度は "_level0.rect" と出力されました。
ムービークリップ "rect" は_rootに配置されているため、_lovel0のrectと表示されたわけです。

試しに以下のようなことをしてみましょう。
ステージ上のムービークリップ "rect" をダブルクリックで選択して、編集モードにした状態で、更に配置されている矩形をムービークリップに変換(F8)します。
名前は"fill"としてみました。


先ほどと同様にインスタンス名、レイヤー名をそれぞれ "fill" にして、さらに上にレイヤーを追加して "@rect" とします。


レイヤー "@rect" に以下のスクリプトを記述して、プレビューします。
trace( fill );
//出力結果 : _lovel0.rect.fill
出力結果は「_lovel0内のムービークリップrectの、更に内部のfill」であることを示しています。
この表記は何かと似ていませんか?HTMLでリンクの記述をするときに「contents/category1/page2.html」のように書くと思いますが、原理はこれと同じです。
Flashもすべて階層構造になっているため、階層を辿るために"/"の代わりに"."を使っているだけです。

レイヤー "@rect" は、ムービークリップ"rect" 自身の持つタイムラインであるため、 レイヤー "@rect"から、ムービークリップ"rect"を指定する場合は "this" を使います。
trace( this );
//出力結果 : _lovel0.rect
また、レイヤー "@rect"から一番上の階層(ルート)を指定する場合は "_root" で直接指定することも出来ますが、"_parent" を用いて相対的に、ひとつ上の階層として指定することも出来ます。
trace( _root );   // 出力結果 : _lovel0
trace( _parent ); // 出力結果 : _lovel0
HTMLで言えば "_root" は「http://」から指定する絶対パス、 "_parent" は「../」やディレクトリ名を用いて指定する相対パスといえます。
ちなみにルートに作成したレイヤー "@root" から、ムービークリップ"fill" を指定する場合は
trace( rect.fill );   // 出力結果 : _lovel0.rect.fill
となります。