为物体的运动做一个总结:
在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方向的速度。