ship.as
package
{
import flash.display.Sprite;
public class Ship extends Sprite
{
public function Ship()
{
draw(false);
}
public function draw(showFlame:Boolean):void
{
graphics.clear();
graphics.lineStyle(1,0xffffff);
graphics.moveTo(10,0);
graphics.lineTo(-10,10);
graphics.lineTo(-5,0);
graphics.lineTo(-10,-10);
graphics.lineTo(10,0);
//是否显示小尾巴
if (showFlame)
{
graphics.moveTo(-7.5,-5);
graphics.lineTo(-15,0);
graphics.lineTo(-7.5,5);
}
}
}
}
main.as
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Lesson9 extends MovieClip {
private var ship:Ship;
private var vx:Number = 0;
private var vy:Number = 0;
private var vr:Number = 0;
private var thrust:Number = 0;
public function Lesson9() {
ship = new Ship();
addChild(ship);
ship.x = this.stage.stageWidth / 2;
ship.y = this.stage.stageHeight / 2;
addEventListener(Event.ENTER_FRAME,enterframeHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keydownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,keyupHandler);
}
private function keydownHandler(e:KeyboardEvent):void{
switch(e.keyCode){
case Keyboard.UP:
thrust = 0.2;
ship.draw(true);
break;
case Keyboard.LEFT:
vr = -5;
break;
case Keyboard.RIGHT:
vr = 5;
break;
default:break;
}
}
private function keyupHandler(e:KeyboardEvent):void{
thrust = 0;
ship.draw(false);
vr = 0;
}
private function enterframeHandler(e:Event):void{
ship.rotation += vr;
//处理加速
var angle:Number = Math.PI * ship.rotation / 180;
var ax:Number = Math.cos(angle) * thrust;
var ay:Number = Math.sin(angle) * thrust;
vx += ax;
vy += ay;
ship.x += vx;
ship.y += vy;
}
}
}