« 1.2 新しくなったイベント処理 | メイン | 1.4 表示リスト »

1.3 シンボルのインスタンスの参照

■ステージに作られたインスタンス
ステージに作られたインスタンスはプロパティインスペクタで付けたインスタンス名で参照できます。ステージにmy_mcというインスタンス名のインスタンスがあるとき、そのインスタンスはmy_mcで参照できます。さらに、インスタンスのプロパティはドット.またはブラケット[]のアクセス演算子を使って参照できます。次のスクリプトはmy_mcのプロパティx(水平座標)の値を150に設定するステートメントです。

例:my_mcのxプロパティの値を150にする
ドット演算子を使ったとき
my_mc.x = 150;
アクセス演算子を使ったとき
my_mc["x"] = 150;

[:note:]
ActionScript 3.0から_rootは廃止されDisplayObjectのプロパティになりました。単純にroot.my_mcのようにはタイムラインのインスタンスを参照することができません。詳しくは「1.3 ステージの表示リスト」で説明します。

■インスタンスの中のインスタンス
ムービークリップが入れ子になっている場合には、インスタンスをドット演算子で連結してます。my_mcの中にball_mcが入っている場合には次の式でball_mcを参照します。たとえば、ball_mcの水平方向の伸縮率scaleXを設定する式は次のようになります。
例:my_mcの中のball_mcのscaleXプロパティの値を2にする
ドット演算子を使ったとき
my_mc.ball_mc.scaleX = 2;
アクセス演算子を使ったとき
my_mc["ball_mc"]["scaleX"] = 2;
アクセス演算子を使えば、次のようにインスタンスを変数で指定できるようになります。
例:my_mcの中のball_mcのscaleXプロパティの値を2にする
var targetMC:String = "ball_mc";
my_mc[targetMC].scaleX = 2;

■this
thisはスクリプトが書かれているインスタンスを指し示します。次のスクリプトは、このスクリプトが書かれているインスタンスに作られているmy_mcの水平座標を200にします。

例:my_mcの水平座標を200にする
this.my_mc.x = 200;

通常、thisは省略することができますが、アクセス演算子を使う場合に便利に利用できます。

例:my_mcの水平座標を150にする
var mcName:String = "my_MC";
this[mcName].x = 150;

また、現在のインスタンスの参照を関数の引数として渡したい場合などにthisを引数の値にします。

例:現在のインスタンスの参照を関数の引数にする
testFunc(this);

■parent
ムービークリップが入れ子になっているとき、parentは相対的に自分より1つ上の階層のインスタンスを指し示します。
たとえば、town_mc.home_mc.room_mcのようにtown_mcの中にhome_mcがあり、home_mcの中にroom_mcがある入れ子構造のムービークリップがあるとします。このとき、各インスタンスをparentを使って相対的に指し示すことができます。

例:home_mcのタイムラインのフレームアクション
trace(parent.name);
//出力:town_mc
例:room_mcのタイムラインのフレームアクション
trace(parent.name);
//出力:home_mc
例:room_mcのタイムラインのフレームアクション
trace(parent.parent.name);
//出力:town_mc

[:note:]
parentは、表示リストでの並びにおいて自分より1つ小さいインデックスの表示オブジェクトを指すDisplayObjectクラスのプロパティです。

About

2007年4月20日 21:00に投稿されたエントリーのページです。

ひとつ前の投稿は「1.2 新しくなったイベント処理」です。

次の投稿は「1.4 表示リスト」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。