AS3.0使用余弦和正弦移动小车

package {
	import flash.display.*;
	import flash.events.*;
	
	public class MovingCar extends MovieClip {
		private var leftArrow, rightArrow, upArrow: Boolean;
		
		public function MovingCar() {

			// 每一帧都移动小车
			addEventListener(Event.ENTER_FRAME, moveCar);
			
			// 响按键事件
			stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressedDown);
			stage.addEventListener(KeyboardEvent.KEY_UP,keyPressedUp);
		}
		
		// 将箭头变量设为True
		public function keyPressedDown(event:KeyboardEvent) {
			if (event.keyCode == 37) {
				leftArrow = true;
			} else if (event.keyCode == 39) {
				rightArrow = true;
			} else if (event.keyCode == 38) {
				upArrow = true;
			}
		}
		
		// 将箭头变量设为false
		public function keyPressedUp(event:KeyboardEvent) {
			if (event.keyCode == 37) {
				leftArrow = false;
			} else if (event.keyCode == 39) {
				rightArrow = false;
			} else if (event.keyCode == 38) {
				upArrow = false;
			}
		}
		
		// 小车向前移动
		public function moveCar(event:Event) {
			if (leftArrow) {
				car.rotation -= 5;
			}
			if (rightArrow) {
				car.rotation += 5;
			}
			if (upArrow) {
				moveForward();
			}
		}
		
		// 计算X和Y并移动小车
		public function moveForward() {
			var speed:Number = 5.0;
			var angle:Number = 2*Math.PI*(car.rotation/360);
			var dx:Number = speed*Math.cos(angle);
			var dy:Number = speed*Math.sin(angle);
			car.x += dx;
			car.y += dy;
		}
	}
}


如果想方向键按下的话,我们要计算小车的角度,用弧度表示。rotation是知道的,不过是用度来表示的,然后将度转为弧度,除以360,乘以2π。

(1)除以360,将0~360的值转换为0~1.0的值。

(2)乘以2π,将0.0~1.0的值转换为0~0.628的值。

弧度=2*π*(度/360)

反过来,当我们希望将弧度转化为度是、时,可以这么做:

(1)除以2π,将0~0.628的值转换为0。0~0.1的值。

(2)乘以360,将0~1.0的值转化为0~360的值。

度=360*弧度/(2*π)。

 

得到了弧度,就可以将它传给Math.cos和Math.sin计算得到移动的dx和dy,然后乘以之前的speed属性。这样一来,每一帧小车就会移动5像素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值