11.2.在指定方向上移动

问题
我想让物体以一定的速度在指定的方向上移动
解决办法
转换速度和角度为x和y速率,进而改变对象的x和y轴位置
讨论
11.1节解释了如何在x和y轴上移动物体,但是如果知道了角度和速度,那该怎么移动物体呢?

例如:我想让物体沿着135度移动,速度为每帧4像素。

这个时候我们可利用基本的数学知识把角度和速度转换为x和y速率。首先,我们要确定角度,如果需要弧度,需要下面的公式转换:
+展开
-ActionScript
radians = degrees * Math.PI / 180;

如果需要度数,这用这个公式:
+展开
-ActionScript
degrees = radians * 180 / Math.PI;

得到弧度后,即可用Math.sin和Math.cos函数结合速度算出x和y速率了:
+展开
-ActionScript
vx = Math.cos(angle) * speed;
vy = Math.sin(angle) * speed;

下面的例子物体沿着135度每帧4像素移动:
+展开
-ActionScript
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class AngularVelocity extends Sprite {
private var _sprite:Sprite;
private var _angle:Number = 135;
private var _speed:Number = 4;
private var _timer:Timer;
public function AngularVelocity ( ) {
_sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100);
_sprite.graphics.drawCircle(0, 0, 25);
_sprite.graphics.endFill( );
_sprite.x = 200;
_sprite.y = 100;
addChild(_sprite);
_timer = new Timer(30);
_timer.addEventListener("timer", onTimer);
_timer.start( );
}
public function onTimer(event:TimerEvent):void {
var radians:Number = _angle * Math.PI / 180;
var vx:Number = Math.cos(radians) * _speed;
var vy:Number = Math.sin(radians) * _speed;
_sprite.x += vx;
_sprite.y += vy;
}
}
}

加支付宝好友偷能量挖...


评论(0)网络
阅读(131)喜欢(0)flash/flex/fcs/AIR