使用 Point 物件

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

Point 物件會定義一對迪卡兒座標。它代表二維座標系統的位置,其中 x 代表水平軸,而 y 代表垂直軸。

若要定義 Point 物件,您必須設定它的 xy 屬性,如下所示:

import flash.geom.*; 
var pt1:Point = new Point(10, 20); // x == 10; y == 20 
var pt2:Point = new Point(); 
pt2.x = 10; 
pt2.y = 20;

找出兩點之間的距離

您可以使用 Point 類別的 distance() 方法,找出座標空間中兩點之間的距離。例如,下列程式碼會在相同的顯示物件容器中,找出 circle1circle2 這兩個顯示物件的註冊點之間的距離:

import flash.geom.*; 
var pt1:Point = new Point(circle1.x, circle1.y); 
var pt2:Point = new Point(circle2.x, circle2.y); 
var distance:Number = Point.distance(pt1, pt2);

轉移座標空間

如果兩個顯示物件位於不同的顯示物件容器中,表示它們可能位於不同的座標空間中。您可以使用 DisplayObject 類別的 localToGlobal() 方法,將不同的座標轉移為「舞台」上相同 (全域) 的座標空間。例如,下列程式碼會在不同的顯示物件容器中,找出 circle1circle2 這兩個顯示物件的註冊點之間的距離:

import flash.geom.*; 
var pt1:Point = new Point(circle1.x, circle1.y); 
pt1 = circle1.localToGlobal(pt1); 
var pt2:Point = new Point(circle2.x, circle2.y); 
pt2 = circle2.localToGlobal(pt2); 
var distance:Number = Point.distance(pt1, pt2);

同樣地,若要找出名為 target 之顯示物件的註冊點與「舞台」上特定點之間的距離,請使用 DisplayObject 類別的 localToGlobal() 方法:

import flash.geom.*; 
var stageCenter:Point = new Point(); 
stageCenter.x = this.stage.stageWidth / 2; 
stageCenter.y = this.stage.stageHeight / 2; 
var targetCenter:Point = new Point(target.x, target.y); 
targetCenter = target.localToGlobal(targetCenter); 
var distance:Number = Point.distance(stageCenter, targetCenter);

依指定的角度與距離移動顯示物件

您可以使用 Point 類別的 polar() 方法,依特定的角度將顯示物件移動特定的距離。例如,下列程式碼會將 myDisplayObject 物件以 60° 移動 100 個像素:

import flash.geom.*; 
var distance:Number = 100; 
var angle:Number = 2 * Math.PI * (90 / 360); 
var translatePoint:Point = Point.polar(distance, angle); 
myDisplayObject.x += translatePoint.x; 
myDisplayObject.y += translatePoint.y;

Point 類別的其它用法

您可以搭配下列方法與屬性使用 Point 物件:

類別

方法或屬性

說明

DisplayObjectContainer

areInaccessibleObjectsUnderPoint()getObjectsUnderPoint()

用來傳回顯示物件容器中某一點下的物件清單。

BitmapData

hitTest()

用來定義 BitmapData 物件中的像素,以及定義要進行碰撞測試的點。

BitmapData

applyFilter()

copyChannel()

merge()

paletteMap()

pixelDissolve()

threshold()

用來定義矩形的位置,這些矩形都會定義作業。

Matrix

deltaTransformPoint()

transformPoint()

用來定義您要針對其套用變形的點。

Rectangle

bottomRight

size

topLeft

用來定義這些屬性。