flash中物体运动基础之一---------匀速运动
此处只涉及到规则物体的运动!!
先定义一个Ball类继承自MovieClip,用作被移动的对象。定义Ball的x,y方向的速度、加速度,初始值都为0;定义质量,初始值为3;
public class Ball extends MovieClip { private var _power:int = 3; private var _vx:Number = 0; private var _vy:Number = 0; private var _mass:Number = 3; private var _ax:Number = 0; private var _ay:Number = 0; public function Ball() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event=null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandle); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandle); addEventListener(Event.ENTER_FRAME, update); } }
为了让Ball自行处理自己的移动,需要监听KeyboardEvent和Event事件。KeyboardEvent对象的keyCode属性(uint类型)记录了每次按下键的ascii码,通过此值我们就知道按了什么键,常用的是检测按下的方向键,下面是四个方向键与其对应的ASCII:
up 38
down 40
left 37
right 39
private function keyDownHandle(e:KeyboardEvent):void { var key:uint = e.keyCode; if (key == 37)//left { vx = -_power; } if (key == 39)//right { vx = _power; } if (key == 38) //up { vy = -_power; } if (key == 40) //down { vy = _power; } }
当按下不同方向键时,分别设置不同方向上的速度,设置的速度大小相同为3,这就是Ball匀速运动了。vx,vy分别是Ball在x,y方向的速度。
private function keyUpHandle(e:KeyboardEvent):void { vx = 0; vy = 0; }
keyUpHandle在按键弹起时执行,主要是恢复速度为0,即Ball将静止。但实际运动着的物体时不能立刻静止的。
private function update(e:Event):void { x += vx; y += vy; }
update函数更新Ball的位置,设置Ball的x,y坐标。
最后为了测试,还需要建立一个Fla文件,设置它的文档类为Main.as,如下:
public class Main extends Sprite { private var _ball:Ball; public function Main() { _ball = new Ball(); _ball.x = 100; _ball.y = 100; addChild(_ball); } }
为简单,此处初始化Ball的位置为(100,100)。
作者:ywxgod
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。