Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 リファレンスガイド > ActionScript クラス > MovieClip > globalToLocal (MovieClip.globalToLocal メソッド) | |||
public globalToLocal(pt: Object ) : Void
pt オブジェクトをステージ (グローバル) 座標からムービークリップ内 (ローカル) の座標に変換します。
MovieClip.localToGlobal() メソッドを使用すると、指定された x 座標と y 座標を、ステージの左上隅を基準にした相対値から、特定のムービークリップの左上隅を基準にした相対値に変換できます。
最初に x と y の 2 つのプロパティを持つ汎用オブジェクトを作成する必要があります。これらの x 値と y 値 (x および y と呼ぶ必要があります) は、ステージの左上隅を基準にしているため、グローバル座標と呼ばれます。x プロパティは、左上隅からの水平オフセットを表します。つまり、そのポイントが基準点からどれだけ右に配置されているかを示します。たとえば、x = 50 の場合、そのポイントは左上隅から 50 ピクセル右に配置されていることになります。y プロパティは、左上隅からの垂直オフセットを表します。つまり、そのポイントが基準点からどれだけ下に配置されているかを示します。たとえば、y = 20 の場合、そのポイントは左上隅から 20 ピクセル下に配置されていることになります。次のコードでは、これらの座標を持つ汎用オブジェクトを作成します。
var myPoint:Object = new Object(); myPoint.x = 50; myPoint.y = 20;
代わりに、オブジェクトを作成し、同時にリテラル Object 値を使用して値を割り当てることもできます。
var myPoint:Object = {x:50, y:20};
グローバル座標を使用して point オブジェクトを作成したら、その座標をローカル座標に変換できます。globalToLocal() メソッドは、パラメータとして受け取る汎用オブジェクトの x 値と y 値を変更するため、値を返しません。このメソッドは、ステージ (グローバル座標) を基準にした値から、特定のムービークリップ (ローカル座標) を基準にした値に変更します。
たとえば、ムービークリップを作成してポイント (_x:100, _y:100) に配置し、ステージの左上隅 (x:0, y:0) を表すグローバルポイントを globalToLocal() メソッドに渡すと、このメソッドはその x 値と y 値をローカル座標、この場合 (x:-100, y:-100) に変換します。この変換が行われるのは、x 座標と y 座標がこの時点で、ステージの左上隅でなくムービークリップの左上隅を基準にして表現されているためです。値が負になるのは、ムービークリップの左上隅からステージの左上隅に到達するのに、100 ピクセル左 (負の x)、かつ 100 ピクセル上 (負の y) に移動する必要があるためです。
ムービークリップの座標は、MovieClip の x 値と y 値を設定する MovieClip のプロパティである _x と _y を使用して表現されていました。ただし、汎用オブジェクトでは、アンダースコアなしの x と y を使用します。次のコードでは、x 値と y 値をローカル座標に変換します。
var myPoint:Object = {x:0, y:0}; // Create your generic point object.
this.createEmptyMovieClip("myMovieClip", this.getNextHighestDepth());
myMovieClip._x = 100; // _x for movieclip x position
myMovieClip._y = 100; // _y for movieclip y position
myMovieClip.globalToLocal(myPoint);
trace ("x: " + myPoint.x); // -100
trace ("y: " + myPoint.y); // -100
サブクラスを作成することにより、MovieClip クラスのメソッドおよびイベントハンドラを拡張できます。
対応バージョン : ActionScript 1.0、Flash Player 5
pt:Object - 汎用の Object クラスを使用して作成したオブジェクトの名前または識別子。このオブジェクトのプロパティで x 座標と y 座標を指定します。
次の ActionScript を、イメージ photo1.jpg と同じディレクトリ内にある FLA ファイルまたは AS ファイルに追加します。
this.createTextField("coords_txt", this.getNextHighestDepth(), 10, 10, 100, 22);
coords_txt.html = true;
coords_txt.multiline = true;
coords_txt.autoSize = true;
this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
target_mc._x = 100;
target_mc._y = 100;
target_mc.loadMovie("photo1.jpg");
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
var point:Object = {x:_xmouse, y:_ymouse};
target_mc.globalToLocal(point);
var rowHeaders = "<b> \t</b><b>_x\t</b><b>_y</b>";
var row_1 = "_root\t"+_xmouse+"\t"+_ymouse;
var row_2 = "target_mc\t"+point.x+"\t"+point.y;
coords_txt.htmlText = "<textformat tabstops='[100, 150]'>";
coords_txt.htmlText += rowHeaders;
coords_txt.htmlText += row_1;
coords_txt.htmlText += row_2;
coords_txt.htmlText += "</textformat>";
};
Mouse.addListener(mouseListener);
この例で使用している MovieClip.getNextHighestDepth() メソッドには Flash Player 7 以降が必要です。SWF ファイルにバージョン 2 のコンポーネントがある場合は、MovieClip.getNextHighestDepth() メソッドではなく、バージョン 2 のコンポーネントの DepthManager クラスを使用します。
getBounds (MovieClip.getBounds メソッド), localToGlobal (MovieClip.localToGlobal メソッド), Object
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001924.html