我们所讨论的角度,对于计算机来说,就是弧度。
公式:
弧度(radians) = 角度(degrees) * Math.PI /180
角度(degrees) = 弧度(radians) * 180 / Math.PI
FLASH坐标系:
Flash 是基于视频屏幕的坐标系,0,0 点为左上角,如图3-4。X值从左向右不断增大,但Y轴是相反的,
正值向下,负值向上。
所以,角度的计算在 Flash 中是颠倒的。顺时针旋转角度为正角。逆时针就意味着为负角。
三角函数
ActionScript 拥有一套用于计算不同三角关系的三角函数:
正弦,余弦,正切,反正弦,反余弦和反正切
正弦(Sine)
一个角的正弦值等于该角的对边与斜边的比,在 ActionScript中,使用 Math.sin(angle) 函数来表示。(angle: 将结果转换为弧度制)
Eg: Math.sin(30 * Math.PI / 180)
余弦(Cosine)
在 Flash 中,使用 Math.cos(angle) 就可以计算余弦值,余弦的定义为角的邻边与斜边之比
正切(Tangent)
Math.tan(angle)。它反应的是对边与邻边之间的关系
在 ActionScript 中,这个函数并不常用,而使用正弦和余弦的时候要多一些。另外,反正切函数却是非常有用的,后面会讲到,这里请大家记住正切函数的比例关系。
反正弦(Arcsine)和反余弦(Arccosine)
Math.asin(ratio) 和 Math.acos(ratio)
Eg:
Math.asin(0.5) * 180 / Math.PI
Math.acos(0.865) * 180 / Math.PI
反正切(Arctangent)
反正切简单地说就是正切函数的反函数。
Math.atan(ratio)
Math.atan2(y,x),这是 Flash 的另一个反正切函数,两个参数:对边长度与邻边长度。
旋转(Rotation)
var dx:Number = mouseX - arrow.x;
var dy:Number = mouseY - arrow.y;
var radians:Number = Math.atan2(dy, dx);
arrow.rotation = radians * 180 / Math.PI;
把这段代码放入enterFrame事件里。
波形
平滑的上下运动
Math.sin(angle):
如果想让物体上下或左右移动,那么就要用到这个函数。
考虑:使用 0~1~-1~0 的变化来实现这个动画,并且反复地使用这个波形。
例如。一个球类ball
ball.y = stage.stageHeight / 2 + Math.sin(angle) * 50;
ball的Y轴在(舞台宽度)/2的上下五十范围变化
利用这些,再加上X轴方向的速度,可以完成波形运动
ball.x += xspeed;
ball.y = centerY + Math.sin(angle) * range;
angle += yspeed;
ball.scaleX = ball.scaleY = centerScale + Math.sin(angle) * range正弦波还可以在 alpha,rotation 等属性中应用。
没有评论:
发表评论