読者です 読者をやめる 読者になる 読者になる

インスタンス自身を動かすスクリプト

MovieClipアクション

f:id:web-design-lesson:20160924045312p:plain

ActionScript2.0の記述場所

アクション名 記述場所
フレームアクション タイムラインのキーフレーム
MovieClipアクション MovieClipインスタンス
Buttonアクション Buttonインスタンス

MovieClipアクション
//MovieClip: _root.my_mc
//MovieClipアクション
on (release) {
  this._x += 10;
}
  • MovieClipインスタンスをマウスで押して、離したときに「10px」ずつ動きます
  • 「this」は、ターゲットパスになります
  • 「this」は、スクリプトを定義したインスタンス自身を指します
  • 「this」を省略すると、スクリプトを記述した「タイムライン」がターゲットとして認識されます

onClipEventイベントハンドラ

  • MovieClipインスタンスではなく、ユーザーがマウスボタンをステージ上のどこでをクリックしても感知して動きます
onClipEvent (mouseDown) {
  this._x += 10;
}

ActionScriptでは、メインのタイムラインすなわち「_root」もMovieClipオブジェクトのインスタンスとして扱われます。
つまり、onClipEvent (mouseDown) ハンドラは、ステージ上のどこをクリックしても実行されることになります。

MovieClipアクションの基本形

onClipEvent (load) {
  moveX = 10;
}
on (release) {
  this._x += moveX;
}

Buttonアクションとthis

f:id:web-design-lesson:20160924060558p:plain


Buttonインスタンスに以下のように記述してみます。

on (release) {
  this._x += 10;
}

この場合、ステージ全体が移動してしまいます。
このButtonアクションは、Buttonインスタンスではなく、配置されたステージそのものの x座標値を変更しているからです。
x座標値を設定するプロパティ「_x」のターゲットパス「this」が、メインのタイムライン「_root」を認識していることによります。
つまり、MovieClipアクションとButtonアクションでは、「this」の参照先が異なるのです。

  1. MovieClipアクションやフレームアクションでは、「this」はスクリプトを定義したMovieClipのタイムラインを参照します
  2. Buttonアクションでは、Buttonインスタンスが配置されたタイムラインを参照します


以下のように記述をすると、「this」は、Buttonインスタンスの配置されたタイムラインを参照します。
つまり、Buttonインスタンスが移動します。

on (release) {
  this.my_btn._x += 10;
}

他のインスタンスをコントロールするターゲットパスの指定

  • 絶対パスの記述
  • 「_root」で始まります
  • どのタイムラインから指定しても、確実にターゲットを参照できます
on (release) {
  _root.my_mc._x += 10;
}
on (release) {
  this.my_mc._x += 10;
}