[AS3] Point 오브젝트의 사용

Programming/ActionScript 3.0 2007. 6. 20. 02:35
1. Point의 개요
Point 클래스는 기존 플래시8버전(ActionScript 2.0)부터 도입된 클래스이지만 ActionScript 3.0에서는 기존의 ActionScript 2.0보다 편리한 메소드와 속성을 가지고 있다. 기본적으로 Point 오브젝트는 1 페어의 좌표치로 나타내지는 직행 좌표상의 포인트를 정의한다. 2 차원의 좌표계에 대응하는 수평축 x 와 수직축 y 에 의해 1 개의 포인트를 표현한다.

Point 오브젝트를 정의할 때는 다음과 같이 x 프롭퍼티와 y 프롭퍼티를 설정한다.

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;
2. 포인트간의 거리의 취득
Point 클래스의 distance() 메소드를 사용하면 같은 좌표 공간내에 있는 2 개의 포인트 사이의 거리를 조사할 수 있다. 예를 들어 다음의 코드에서는 같은 표시 오브젝트 컨테이너내에 있는 2개의 표시 오브젝트 circle1 와 circle2가 가지는 기준점간의 거리를 취득한다.

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);
3. 좌표 공간의 변환
2 개의 표시 오브젝트가 각각 다른 표시 오브젝트 컨테이너내에 있는 경우는 각각의 속하는 좌표 구간이 차이가 날 가능성이 있다. DisplayObject 클래스의 localToGlobal() 메소드를 사용하면 그러한 좌표를 공통의 글로벌인 좌표 공간 (스테이지 좌표)로 변환할 수 있다. 예를 들어 다음의 코드에서는 다른 표시 오브젝트 컨테이너내에 있는 2개의 표시 오브젝트 circle1 와 circle2가 가지는 기준점간의 거리를 측정한다.

import flash.geom.*;
var pt1:Point = new Point(circle1.x, circle1.y);
pt1 = circle1.localToGlobal(pt1);
var pt2:Point = new Point(circle1.x, circle1.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);
4. 각도와 거리의 지정에 의한 표시 오브젝트의 이동
이동거리와 각도를 지정해 오브젝트를 이동하려면 Point 클래스의 polar() 메소드를 사용한다. 예를 들어 다음의 코드에서는 myDisplayObject 오브젝트를 60도의 방향으로 100 픽셀만큼 이동합니다.

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

    

설정

트랙백

댓글