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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号