インスタンスを参照する方法について学習しましょう。
シンボルから作られるインスタンスでも ActionScript で作られたオブジェクトでも、そのプロパティやメソッドにアクセスするには、ドット演算子( . )を使用します。
これは、フォルダ構造のようにデータの場所を参照する方法に似ています。
例えば、あなたの PC に保存されている「sample.txt」というデータにアクセスしようとした場合、次のようにアクセスすすることができます。
C:¥Documents and Settings¥user name¥My Documents¥sample.txt
異なる階層ごとに ¥ マークで区切られています。
ActionScript ではこの ¥ マークがドット演算子( . )に置き換わっているように考えられます。
例えばあなたの右手の親指をドットシンタックスで表してみましょう。
body.righthand.thumb
これを日本語で表わしてみると「体(body)」の「右手(righthand)」の「親指(thumb)」になります。ちょうど「の」をドット演算子( . )に置き換わっているようなイメージでしょうか。
Flash IDE で作成されたシンボルから作られるインスタンスには、「プロパティインスペクタ」でつけたインスタンス名でアクセスすることができます。
ステージに配置した MovieClip のインスタンスに「プロパティインスペクタ」で my_car という名前をつければ、そのインスタンスは my_car で参照することができます。
つまり、このインスタンスは、ActioScript から見ると、メインタイムライン に配置(追加)された MovieClip クラスのインスタンス my_car というオブジェクトとなります。
では、このインスタンスの参照を使ってムービークリップのプロパティを操作しましょう。
ムービークリップの X 座標位置を決めるのは、 x プロパティになります。
オブジェクトのプロパティにアクセスするには、ドット演算子( . )を使用します。
記述の仕方は、インスタンス名に続けてプロパティ名 x をドットで接続します。
my_car.x
直接プロパティを操作するには、代入演算子( = )を使って値を代入する方法があります。
次のように記述すると、 my_car は、X座標を 100 の位置に移動します。
my_car.x = 100;
プロパティと同様にメソッドにもドットで接続してアクセスすることができます。
MovieClip クラスの gotoAndPlay() メソッドは、指定されたフレームに移動し、再生を開始させます。引数には、再生ヘッドの送り先のフレーム番号を表す数値か、フレームのラベルを表す文字列を指定できます。
次のコードは、 gotoAndPlay() メソッドと、現在のフレーム位置を示す currentFrame プロパティを使って my_car のタイムラインの再生ヘッドを現在のフレームから 5 フレーム先に進めます。
my_car.gotoAndPlay(my_car.currentFrame + 5);
メインタイムライン に配置されたムービークリップが入れ子になっていた場合には、その子を参照するにはどうすればよいでしょうか。
ムービークリップが別のムービークリップの中にあるような、階層構造になっている場合もドット演算子で接続して指定することができます。
下記の例は、MovieClip のインスタンス my_car の中にある MovieClip のインスタンス tire の rotation プロパティにアクセスするものです。
my_car.tire.rotation;
インスタンスを参照するときに重要キーワードが this 演算子と parent 演算子です。
this 演算子
this 演算子は、そのスクリプトが書かれているインスタンスを指し示します。
下記の例は、スクリプトが書かれているタイムラインに配置されている MovieClip のインスタンス my_car の X 座標を 100 の位置に移動します。
this.my_car.x = 100;
スクリプトが書かれているタイムラインから、自分自身の参照を関数に渡したいときなどに使用します。
myFunc(this);
parent 演算子
ムービークリップが階層構造になっているとき、parent 演算子は、そのスクリプトが書かれているインスタンスから見て相対的にひとつ上の階層のインスタンス、つまり自分自身の親インスタンスを指し示します。
メインタイムラインに配置された MovieClip のインスタンス my_car の中に MovieClip のインスタンス tire が配置されています。 このとき、 tire から見た my_car を parent 演算子を使って相対的に指し示すには tire のタイムラインに次のように記述します。
trace(parent.name); // my_car
階層を 2 つたどればメインタイムラインにアクセスします。
trace(parent.parent.name); // [object MainTimeline]
Post your comment