物体的运动(一)
为物体的运动做一个总结:
在FlashDevelop中建立一个FlashIDE工程,新建一个Fla文件到工程目录,在Fla文件中新建一个库元件Circle(类名,一个圆形Sprite),接下来新建两个类,一个是主类Main.as,一个是Circle.as。
package
{
import flash.display.Sprite;
/**
* ...
* @author ywxgod--http://www.cnblogs.com/ywxgod/
*/
public class Circle extends Sprite
{
public var vx:Number = 0;
public var vy:Number = 0;
public var ax:Number = 0;
public var ay:Number = 0;
public var mass:int = 3;
public var friction:Number = 0.96;
public function Circle()
{
}
}
}
Circle类中定义了一些基本的属性,有x,y方向的速度和加速度,摩擦力,质量等,为了简单,我全部定义public类型。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
/**
* ...
* @author ywxgod--http://www.cnblogs.com/ywxgod/
*/
public class MoreFoundation extends Sprite
{
private var _circle:Circle;
public function MoreFoundation()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event=null):void
{
appInit();
}
private function appInit():void
{
_circle = new Circle();
addChild(_circle);
_circle.x = stage.stageWidth / 2 - _circle.width / 2;
_circle.y = stage.stageHeight / 2 - _circle.height / 2;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardDownEventHandle);
stage.addEventListener(KeyboardEvent.KEY_UP, keyboardUpEventHandle);
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function keyboardDownEventHandle(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case 38://up
_circle.ay = -1;
break;
case 40://down
_circle.ay = 1;
break;
case 37://left
_circle.ax = -1;
break;
case 39://right
_circle.ax = 1;
break;
}
}
private function keyboardUpEventHandle(e:KeyboardEvent):void
{
_circle.ax = 0;
_circle.ay = 0;
}
private function onFrame(e:Event):void
{
_circle.vy += _circle.ay;
_circle.vx += _circle.ax;
_circle.vx *= _circle.friction;
_circle.vy *= _circle.friction;
_circle.x += _circle.vx;
_circle.y += _circle.vy;
vxTi.text = _circle.vx.toFixed(2);
vyTi.text = _circle.vy.toFixed(2);
}
}
}
Main类中,监听舞台的键盘事件,主类的EnterFrame事件,在键盘事件中根据不同的按键,设置不同的方向的加速度,在EnterFrame事件中应用到物体上。
将加速度加到速度上,再将速度加到x,y坐标上,如果有摩擦力,则速度要乘以一个摩擦系数再加到x,y坐标上。
vxTi,vyTi分别是舞台上两个TextInput组件,用来记录物体的x,y方向的速度。
作者:ywxgod
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号