HOME MENU
 
Flash ActionScript Helper
ムービークリップインスタンスの座標の取得
最終更新日: 02/01/26

取得可能な2種類の座標

Flash5では、ムービークリップインスタンスの基準点、および上下左右の2種類の座標を取得することができます。基準点はムービークリップ・プロパティ _x、_y。上下左右はムービークリップ・メソッド、MovieClip.getBounds()を使用して取得します。
Flashには、ステージ左上を原点とするグローバル座標のほかに、ムービークリップインスタンスごとにローカル座標空間があります。取得した値が、どの座標空間のものか、常に注意してください。





基準点の座標を格納する _x、_y プロパティ

ムービークリップインスタンスの基準点の座標は、ムービークリップ・プロパティ _x、_y に格納されています。したがって、_x、_y を参照することによって基準点の座標を取得します。_x で基準点のx座標を、_y でy座標を取得できます。なお、基準点は、シンボル編集で変更可能です。詳しくは「ムービークリップの基準点」をご覧ください。
ムービークリップ・プロパティ _x、_yが返す値は、ステージ上に直接配置されたもの以外は、指定したムービークリップインスタンスが配置された親ムービークリップインスタンスのローカル座標です。ステージ左上を原点としたグローバル座標ではありません。グローバル座標が必要な場合は、取得した座標をムービークリップ・メソッドMovieClip.localToGlobal()を使用して、変換してください。
ムービークリップ・プロパティ _x、_yの参照方法は、以下の通りです。

・カレントインスタンスプロパティの参照
  指定例:disp = _x;
  //自分のプロパティ_x(基準点のx座標)の値を変数dispに代入します。

・他インスタンスのプロパティの参照
  指定例:disp = _root.mc1._y;
  //_root.mc1のプロパティ_y(基準点のy座標)の値を変数dispに代入します。

・サンプルムービー
ボタンをクリックすると、ムービークリップmc1が停止し、下の表示欄(dispP)に基準点のxy座標を表示します。表示に関するスクリプトは以下の通りです。  


サンプルムービー1
on(press) {
  _root.dispP = _root.mc1._x + "\n" + _root.mc1._y;
}


上下左右の座標を取得するムービークリップ・メソッド MovieClip.getBounds()

ムービークリップインスタンスの上下左右の座標を取得するには、ムービークリップ・メソッド MovieClip.getBounds()を使用します。指定例は以下の通りです。

指定例:result = this.getBounds(_root);

ドット(.)の前には、参照するムービークリップインスタンス名(例では自分自身なのでthis)を、()内には取得する座標空間をムービークリップインスタンス名(例では_root)で指定し、必ず、代入文を使って変数(例ではresult)に戻り値を格納します。
実行後、変数(result)には、

  • xMin(左の座標値 = x座標の最小値)
  • xMax(右の座標値 = x座標の最大値)
  • yMin(上の座標値 = y座標の最小値)
  • yMax(下の座標値 = y座標の最大値)

の4つのプロパティを持つ、Objectオブジェクトが格納されています。
各値を参照するためには、 (オブジェクト名).(プロパティ名)を指定します。例えば上の例では、

  • result.xMin
  • result.xMax
  • result.yMin
  • result.yMax

と指定することによって、各値を参照できます。

・カレント・ムービークリップ・インスタンスの場合
  指定例:result = this.getBounds(_root);
  //_root座標空間における自分の上下左右の座標値を取得し、変数resultに代入します。

・他インスタンスの場合
  指定例:result = _root.mc1.mc2.getBounds(_root.mc1);
  //_root.mc1座標空間における_root.mc1.mc2の上下左右の座標値を取得し、変数resultに代入します。

・サンプルムービー
回転するムービークリップインスタンスの_root座標空間における上下左右の値を取得し、表示します。取得、表示に関するスクリプトは以下の通りです。
なお、Line1〜Line4は上下左右の移動するラインのムービークリップインスタンス、sPosはそれらのムービークリップインスタンス上に配置されたダイナミックテキストです。


サンプルムービー2
result = this.getBounds(_root);  //値の取得
_root.Line1.sPos = result.xMin;  //以下、値の表示
_root.Line2.sPos = result.xMax;
_root.Line3.sPos = result.yMin;
_root.Line4.sPos = result.yMax;


・関連項目

座標空間
ムービークリップの基準点
座標の変換


HOME MENU ページTOPへ