|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用于设计和编辑Flash文档。1996年11月,美国Macromedia公司收购了FutureWave,并将其改名为Flash。后又被Adobe公司收购。
当要运算两点间隔时,我见很多人都是用最原始的运算办法,实在2.0入手下手就有了Point类,能够盘算两点间间隔,除此以外,Point类还可用于盘算矢量,某些看似庞大的盘算,用上Point类就会变得复杂。固然,要巧用Point类,必须要有矢量的常识。固然,3.0的Point类和2.0的区分不年夜,但我之以是把这帖放在as3会商区,是由于as3的Point类普遍地被其他类使用。最分明的是globalToLocal和localToGlobal这两个办法,2.0这两个办法的参数和前往值都是Object,但3.0都变成Point类了,使得Point类的使用改名正言顺了。
空话少说,言回正转,起首我们看看Point类的属性:
x:Number——该点的程度坐标
y:Number——该点的垂直坐标
length:Number——从(0,0)到此点的线段长度(只读属性)
从length属性我们能够看到,实践上一个Point类的实例是一个以(0,0)为始点,以(x,y)为尽头的矢量,因而,我们能够使用Point类举行一些复杂的矢量运算。如今我们看看Point类给我们供应甚么有效的办法:
distance(pt1:Point,pt2:Point):Number——前往pt1和pt2之间的间隔。这个就是人人傻傻地用Math.sqart()写一长串代码盘算出来的两点间间隔了。
add(v:Point):Point——将另外一个点的坐标增加到此点的坐标以创立一个新点。还记得矢量相加的多少意义吗?
设a、b为矢量,则a+b=c,图中矢量c就是矢量a加矢量b的了局。
这个用来盘算协力最便利。我们能够把物体的重心放到(0,0)点上,然后能够使用Point类的add办法复杂盘算各类力的协力。你大概会提出一个成绩:怎样把力转换成点的坐标呢?上面这个办法能够帮你办理这个成绩。
polar(len:Number,angle:Number):Point——将一对极坐标转换为笛卡尔点坐标。
学过物理力学的人都晓得,力是有巨细无方向的矢量,而这个办法恰好供应了把力转换成点坐标的办法。len就是力的巨细,angle就是力角度。转换后盘算协力,得出协力的坐标点,再读取这点的length属性,便可失掉协力的巨细,再使用Math.atan2(y,x)盘算力的偏向。多复杂的运算!
offset(dx:Number,dy:Number):void——按指定量偏移Point工具。dx的值将增加到x的原始值中以创立新的x值。dy的值将增加到y的原始值中以创立新的y值。这个要和add辨别开来,由于offset是间接把值加到x、y值上。
subtract(v:Point):Point——今后点的坐标中减往另外一个点的坐标以创立一个新点。既然有了加法,固然有减法了。看看矢量的减法意义:
设a、b为矢量,则b-a=c,图中矢量c就是矢量b减往矢量a的了局。
用这个运算,你能够便利地只用一个Point类实例来纪录某两点间的间隔和斜率。在某些场所,这个很有效。比方当必要盘算和纪录某点汇合里各点与其他点之间的干系时,假如分离运算间隔和角度,你得用两个逐一对应的数组纪录,固然也能够用一个多联数组,但相对比不上用一个Point类实例构成的一维数组复杂很多,假如要对这些了局举行对照大概有下一步运算时,用这类办法更显上风。
interpolate(pt1:Point,pt2:Point,f:Number):Point——断定两个指定点之间的点。参数f断定新的内插点相对参数pt1和pt2指定的两个端点所处的地位。参数f的值越靠近1.0,则内插点就越靠近第一个点(参数pt1)。参数f的值越靠近0,则内插点就越靠近第二个点(参数pt2)。
这个办法更了不得。由于它能帮我们断定两点之间的一点,只需我们晓得这点在线段中地位。实践上f是一个比例值,
f=待定点到pt2的间隔/整条线段的长度
这个用来盘算一些已知比例干系的点很便利。比方求舆图上的某点在实践场景上的点坐标,我们只需拔取一段过这点的线段,盘算出f,就能够代进实践场景中对应线段,求出对应的点。
normalize(thickness:Number):void——将(0,0)和以后点之间的线段缩放为设定的长度。这个实践上就是设置矢量的巨细的办法。失掉的了局是矢量的巨细变成设定值,x、y值改动了,可是矢量的偏向稳定。
从Point类的属性和办法看,Point类实践上是一个彻彻底底的矢量类,它几近包括了一切关于矢量的基础运算。以是,要盘算矢量,应优先思索利用Point类。
PS:顺带说说globalToLocal和localToGlobal,这两个办法在as3里是DisplayObject的办法,它们能够便利地随便地转换分歧显现工具中的绝对坐标,它的参数和前往值都是Point类实例,以是在as3里使用Point类盘算点与点间的干系,更具上风。比方mc1中有一点p1(x1,y1),mc2中有一点p2(x2,y2),假如mc1和mc2的干系很庞大,请求p1到p2的间隔,假如不必这两个办法,这个运算就很庞大,用上它们就复杂很多了,所求的间隔d=Point.distance(p2,mc2.globalToLocal(mc1.localToGlobal(p1)));
flash动画制作软件的界面没有太大的改变,只是在以前的属性面板右侧增加了两个新的选项“参数”和“滤镜”。 |
|