ActionScript 3.0基础——Point 对象

高中时几何和物理学得不好,老是记不住一些公式,因此做Flash游戏就头大。现在好了,ActionScript 3.0中的flash.geom 包中包含了用于定义几何对象(如点、矩形和转换矩阵)的类,以后做Flash游戏就方便多了。

Point 对象定义一对笛卡尔坐标。它表示二维坐标系中的某个位置。其中x表示水平轴,y 表示垂直轴。

一、确定两点之间的距离

//定义 Point 对象
var pt1:Point = new Point(0, 0);
var pt2:Point = new Point();
//平移坐标
pt2.offset(3,4);
var dist = Point.distance(pt1, pt2);
trace(dist);

看出来没?这就是勾股定理的一个简单应用。

二、按指定的角度和距离移动显示对象

ActionScript 3.0以前按指定的角度和距离移动显示对象只能用Math类的方法,相当复杂。现在利用Point对象的polar 方法方便地实现 类似功能。看下面代码。

import flash.geom.*; 
import flash.events.*; 
//创建圆形 
var size:uint = 100; 
var roundObject:Shape = new Shape(); 
roundObject.graphics.beginFill(0xFF0000); 
roundObject.graphics.moveTo(size / 2, 0); 
roundObject.graphics.curveTo(size, 0, size, size / 2); 
roundObject.graphics.curveTo(size, size, size / 2, size); 
roundObject.graphics.curveTo(0, size, 0, size / 2); 
roundObject.graphics.curveTo(0, 0, size / 2, 0); 
stage.addChild(roundObject); 
//移动圆形 
var distance:Number = 100; 
var angle:Number = 2 * Math.PI * (30 / 360); 
var translatePoint:Point = Point.polar(distance, angle); 
var dx:Number = translatePoint.x/5; 
var dy:Number = translatePoint.y/5; 
//自定义侦听器函数 
function onMove(e:Event):void { 
    var s:Shape = e.target as Shape; 
    s.x += dx; 
    s.y += dy; 
    if (s.x > 400) { 
       //删除侦听器 
        roundObject.removeEventListener(Event.ENTER_FRAME,onMove); 
    } 
} 
//注册侦听器 
roundObject.addEventListener(Event.ENTER_FRAME, onMove);

polar 方法可以将一对极坐标转换为笛卡尔点坐标。Point 对象中还有add和subtract等其它方法,大家参看帮助文件吧。

发表评论