翻老贴的时候,找到了春叶飘零(2006-10-12)的这篇文章:
import flash.geom.Point
var __pointOld:Point=new Point(mouseX,mouseY)//获取鼠标初始位置
this.addEventListener("enterFrame",enterHandler)//注册真循环事件
function enterHandler(e:Event){
var pointNew:Point=new Point(mouseX,mouseY)
var step:Number=Point.distance(pointNew,__pointOld)//求每真移动距离
trace(step*stage.frameRate)//得出每秒鼠标的移动象素
__pointOld=pointNew//新值换旧值
}
查了下API,发现Point中有三个静态方法。
1、Point.distance(pt1:Point,pt2:Point):Number
说明,返回pt1和pt2之间的距离。
var pt1:Point=new Point(10,10);
var pt2:Point=new Point(30,30);
trace(Point.distance(pt1,pt2));//28.284271247461902
==========================================华丽丽分割线======================================
2、Point.interpolate(pt1:Point,pt2:Point,f:Number):Point
//interpolate有篡改,插入的意思。
说明,在两点之间插入一个点。
f,取值范围在0~1之间,确定的是插入点的级别。接近1时,内插点则靠近pt1(第一个点),接近0时,内插点则靠近pt2(第二个点)。
var pt1:Point=new Point(10,30);
var pt2:Point=new Point(30,30);
var insertPoint:Point=Point.interpolate(pt1,pt2,0.5);
trace(insertPoint.x,insertPoint.y);//20 30
==========================================华丽丽分割线======================================
3、Point.polar(len:Number,angle:Number):Point
说明,将极坐标转换为平面坐标。
先来看看极坐标的定义,
在 平面内取一个定点O, 叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度,θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。(摘自《百度百科》)
angle取的是一个弧度值。角度转弧度 -> Math.PI*degress/180
var pt:Point=Point.polar(10,90*Math.PI/180);
trace(pt.x,pt.y);//6.123031769111886e-16 10
==========================================华丽丽分割线======================================
==========================================华丽丽分割线======================================
其实点还有其他非常有用的属性及方法。
3个公有属性
length:number //从 (0,0) 到此点的线段长度
x:number //该点的水平坐标
y:number //该点的垂直坐标。
其他常用方法。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
add(v:Point):Point
将另一个点的坐标添加到此点的坐标以创建一个新点.
var pt1:Point=new Point(10,30);
var pt2:Point=new Point(30,30);
var npt:Point=pt1.add(pt2);
trace(npt.toString());
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
clone():Point
考贝一个点。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
equals(toCompare:Point):Boolean
确定两个点是否相同。 如果两个点具有相同的 x 和 y 值,则它们是相同的点。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
normalize(thickness:Number)
var pt1:Point=new Point(8,6);
pt1.normalize(5);
trace(pt1);//(x=4, y=3)
用一个直角三角形来描述理解起来会比较直观一点。(勾股定理)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
offset(dx:Number,dy:Number)
没有返回值。按指定的数值偏移原点的x,y坐标。
var pt1:Point=new Point(10,30);
pt1.offset(10,10);
trace(pt1.toString()); //(x=20, y=40)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
subtract(v:Point):Point
从此点的坐标减去v点的坐标,以创建一个新点。
var pt1:Point=new Point(10,30);
var pt2:Point=new Point(30,30);
var npt:Point=pt2.subtract(pt1);
trace(npt.x,npt.y); //20 0
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
toString():String //以字符串形式返回该点的x,y坐标值。