三角函数属于Flash中的顶级对象----Math,一提到这个名词很多人是不是会感到"恐惧",但在游戏的制作中它可是必不可少的。
这里我们利用Math的atan方法来制作一个永远指向鼠标的指针(例6),其他的三角函数以及数学函数的用法和注意事项请参考附录中的数学函数表.
新建一个MC,画一个长度为70的水平指向右侧的箭头(箭头根部放在中心点上),回到场景,Ctrl+J修改影片的大小为200*200,将指针从库中拖入场景,命名为"pointer",修改坐标为100*100,在主timeline的第一帧中写如下AS:
x = _xmouse-100;
y = _ymouse-100;
//将坐标中心移到场景的中心
tan = Math.atan(y/x)*180/Math.PI;
//注意要使用弧度表示的角度值
if (x>=0 && y>=0) {
r = Math.round(tan);
} else if (x>=0 && y<0) {
r = Math.round(360+tan);
} else {
r = Math.round(180+tan);
}
//判断各种不同的情况,通过运算使r值在0-360之间
pointer._rotation = r;
//将r值付给_rotation
放置一个用来显示r值的文本框属性为Dynamic Text,获取变量(Var)为"r",第二帧建立内容帧,Ctrl+Enter测试。
附:
| 数学函数表(Math) | |||
| 方法 | 描 述 | 语法 | 说 明 |
| abs | 计算并返回由参数 x 指定的数字的绝对值. | Math.abs(x) | |
| acos | 以弧度为单位计算并返回参数 x 中指定的数字的反余弦值. | Math.acos(x) | -1.0<=x<=1.0 |
| asin | 以弧度为单位计算并返回参数 x 中指定的数字的反正弦值. | Math.asin(x) | -1.0<=x<=1.0 |
| atan | 计算并返回参数 x 中指定的数字的反正切值. | Math.atan(x) | 返回值介于负二分之 pi 与正二分之 pi 之间. |
| atan2 | 以弧度为单位计算并返回 y/x 的反正切值.返回值表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长. | Math.atan2(y,x) | x/y分别指定点的x坐标和y坐标 |
| ceil | 返回指定数字或表达式的上限值.数字的上限值是大于等于该数字的最接近的整数. | Math.ceil(x) | |
| cos | 返回由参数 x 指定的角的余弦值(介于 -1.0 与 1.0 之间的值).必须以弧度为单位指定角度 x. | Math.cos(x) | x为弧度,换算公式为:1弧度=角度*180/Math.PI |
| exp | 返回 e 的 x 次方的值,其中 e 为自然对数的底 (e),x 为参数 x 中指定的指数. | Math.exp(x) | 常数 Math.E 可以提供 e 的值. |
| floor | 返回参数 x 中指定的数字或表达式的下限值.下限值是小于等于指定数字或表达式的最接近的整数. | Math.floor(x) | 表达式:Math.floor(12.5)将返回值:12 |
| log | 返回参数 x 的自然对数. | Math.log(x) | x>0 |
| max | 返回两个数中最大者 | Math.max(x,y) | |
| min | 返回两个数中最小者 | Math.min(x,y) | |
| pow | 计算x的y次幂 | Math.pow(x) | |
| random | 返回n,其中 0 <= n < 1 | Math.random() | 获得a-b之间的随机整数的公式为: Math.floor(Math.random()*(b-a+1)+a) |
| round | 将参数 x 的值向上或向下舍入为最接近的整数并返回值 | Math.round(x) | |
| sin | 计算并返回以弧度为单位指定的角度的正弦值 | Math.sin(x) | 换算公式参见cos |
| sqrt | 计算并返回指定数字的平方根 | Math.sqrt(x) | x>=0 |
| tan | 计算并返回指定角度的正切值 | Math.tan(x) | 换算公式参见cos |
以上我们向大家介绍了Flash游戏制作中最常用的一些ActionScript,掌握了这些基本控制方法,就可以制作出很多有意思的Flash游戏,同时在制作的过程中你还会发现更多的技巧,欢迎投稿和大家一起交流