要实现匀速直线位移动画,就必须考察两点之间的距离。所以要首先掌握两个点之间距离的求法。AS3种提供的Math类提供了一个开平方函数sqrt()。根据简单的三角几何知识,可以很容易的写出任意点M(xm,ym)和任意点N(xn,yn)之间距离P的算法。
P=Math.sqrt((xm-xn)* (xm-xn)+ (ym-yn)* (ym-yn));
该算法的几何描述可以参考图的图像分析:

考虑到这类计算的次数较多,有必要写一个专用函数。该函数应该具有两个参数,分别是两个Point对象。该函数的返回值就是两点之间的距离。
function dist(point1:Point,point2:Point):Number{
var distance:Number;
var pdx=point1.x-point2.x;
var pdy=point1.y-point2.y;
distance=Math.sqrt( Math.pow(pdx,2)+Math.pow(pdy,2));
return distance;
}
此函数可以通用。其要求传入的参数是Point对象,对于本例而言是合适的。因为代码将会声明三个Point对象。如果读者需要在其他场合使用,也许并不会使用Point类,则直接传入两组x和y值会更加方便,请读者根据需要自行修改。
14

被折叠的 条评论
为什么被折叠?



