在这个例子中,首先设置一个 x 轴速度向量(vx)等于5。记住是指每一帧5像素,所以,在每一帧中, vx 都会被加到 ball 的 x 属性中。并为 enterFrame 设置事件处理函数。每走一帧,小球都会在前一帧的位置基础上向右移动5个像素。
双轴速度向量
使用两个轴对物体进行移动也非常简单,只需要定义 vx 和 vy,并在每一帧将 vx 加到 x 属性上, vy 加到 y 属性上。下面一个示例:
1--4 步同上,输入代码:
var vx:Number = 5; var vy:Number = 5; addEventListener(Event.ENTER_FRAME,onEnterFrame); function onEnterFrame(event:Event):void { ball.x += vx; ball.y += vy; } |
角速度
假如想让物体以每帧3像素的速度向45度的位置移动,这里要用到三角学。 已知角度为45度,斜边长为3像素,就可以使用 Math.cos 和 Math.sin 求出 vx 和 vy 的长度。 角的邻边长度为 vx,因为角的余弦值等于邻边/斜边。也可以说,邻边等于角的余弦值乘以斜边。同样,对边长为 vy 的边,因为角的正弦值等于对边/斜边,或是对边等于正弦乘以斜边。
实际使用的代码: vx = Math.cos(angle) * speed; vy = Math.sin(angle) * speed;
示例代码:
var angle:Number = 45; var speed:Number = 3; addEventListener(Event.ENTER_FRAME,onEnterFrame); function onEnterFrame(event:Event):void { var radians:Number=angle * Math.PI / 180; var vx:Number=Math.cos(angle) * speed; var vy:Number=Math.sin(angle) * speed; ball.x += vx; ball.y += vy; } |
与前面 vx,vy 主要不同的地方是变成了 angle 和 speed,计算出的速度向量作为局部变量被使用。当然,由于是一个简单的示例,角度(angle)和速度(speed)都不变,那么完全可以只计算一次,然后保存在类中作为变量。而对于更高级的运动来说,角度和速度应是不断变化的,所以 vx 和 vy 的值也是变化的。只需要改变角度(angle)与速度(speed),就可以改变物体运动的速度及角度。
下面制作鼠标跟随
1、新建FLA文档
2、新建影片剪辑元件,绘制一个箭头。
3、返回场景1,选中第1帧,打开动作面板输入代码:
var speed:Number = 5; addEventListener(Event.ENTER_FRAME,onEnterFrame); function onEnterFrame(event:Event):void { var dx:Number = mouseX - arrow.x; var dy:Number = mouseY - arrow.y; var angle:Number = Math.atan2(dy, dx); arrow.rotation = angle * 180 / Math.PI; var vx:Number = Math.cos(angle) * speed; var vy:Number = Math.sin(angle) * speed; arrow.x += vx; arrow.y += vy; } |
|