FLASH as3制作飞机游戏教程

用纯as3脚本实现飞机类游戏

游戏结束后,点击左上角的xxms重新开始游戏。有两类,一类是自己,一类是敌人。将您的类命名为Ball1.as:

Package {//ball1类是玩家操作的球。

导入flash . display . *;

导入flash . events . *;

导入flash . text . *;

导入flash . utils . *;

公共类Ball1扩展Sprite {

公共变量lable:TextField = new TextField();

公共var速度:int = 60

公共var Stage 1:Stage;

public var ball list:Array = new Array();

公共var Timer:Timer = new Timer(1);

公共函数ball 1(Stage 1:Stage){

this . stage 1 = stage 1;

init();

}

公共函数init():void {//初始化

stage1.addChild(标签);

graphics.lineStyle(1,0);

graphics.drawCircle(0,0,10);

x = stage 1 . stage width/2;

y = stage 1 . stage height/2;

stage 1 . addevent listener(mouse event。MOUSE_DOWN,mouseDownHandler);

stage1.addEventListener(事件。ENTER_FRAME,ENTER FRAME handler 2);

timer . start();

timer . addevent listener(timer event。TIMER,TIMER handler);

}

公共函数timer handler(e:timer event):void {

lable . text = " "+e . target . current count+" ms ";

}

公共函数mouseDownHandler(e:Event):void {

stage1.addEventListener(事件。ENTER_FRAME,ENTER FRAME handler 1);

stage 1 . addevent listener(mouse event。MOUSE_UP,mouseUpHandler);

}

公共函数mouseUpHandler(e:Event):void {

stage 1 . removeeventlistener(事件。ENTER_FRAME,ENTER FRAME handler 1);

stage 1 . removeeventlistener(mouse event。MOUSE_UP,mouseUpHandler);

}

公共函数enter frame handler 1(e:event){//控制球的移动。

var speedX:int = speed *(stage 1 . mousex-x)/math . sqrt((stage 1 . mousey-y)*(stage 1 . mousey-y)+(stage 1 . mousex-x)*(stage 1 . mousex-x);

var speedY:int = speed *(stage 1 . mousey-y)/math . sqrt((stage 1 . mousey-y)*(stage 1 . mousey-y)+(stage 1 . mousex-x)*(stage 1 . mousex-x);

var x 1:int;

var y 1:int;

if(math . ABS(speedX)& lt;math . ABS(stage 1 . mousex-x)){

x 1 = x+speedX;

}否则{

x 1 = stage 1 . mousex;

}

if(math . ABS(speedY)& lt;math . ABS(stage 1 . mousey-y)){

y 1 = y+speedY;

}否则{

y 1 = stage 1 . mousey;

}

if(x 1 & lt;0) {

x = 0;

} else if(x 1 & gt;stage.stageWidth) {

x = stage.stageWidth

}否则{

x = x 1;

}

if(y 1 & lt;0) {

y = 0;

} else if(y 1 & gt;stage.stageHeight) {

y = stage.stageHeight

}否则{

y = y 1;

}

}

公共函数enter frame handler 2(e:event):void {//判断游戏是否结束。

for(var I:int;我& ltballList.lengthi++) {

if(math . sqrt((x-ball list . x)*(x-ball list . x)+(y-ball list . y)*(y-ball list . y))& lt;15) {

timer . reset();

for(var j:int;j & ltballList.lengthj++) {

ballList[j].stop run();

}

lable . addevent listener(mouse event。点击,CLICK handler);

打破;

}

}

}

公共函数clickhandler (e: mouse事件):void {//控制游戏的开始。

for(var j:int;j & ltballList.lengthj++) {

ballList[j].initXy();

ballList[j].startRun();

}

lable.text =

x = stage 1 . stage width/2;

y = stage 1 . stage height/2;

timer . start();

lable . removeeventlistener(mouse event。点击,CLICK handler);

}

}

}

敌军级Ball2.as:

包{//ball2类,可以当敌人子弹。

导入flash . display . *;

导入flash . events . *;

公共类Ball2扩展Sprite {

公共var ball1:雪碧;

公共var速度:int = 30

public var speedX:int = 0;

public var speedY:int = 0;

公共函数Ball2(ball1:Sprite) {

this . ball 1 = ball 1;

init();

initXy();

startRun();

}

公共函数init():void {//初始化

graphics.lineStyle(1,0);

graphics.drawCircle(0,0,5);

}

公共函数enter frame handler(e:event){//控制项目符号的移动。

if(math . random()& lt;0.1){

var d:int = math . sqrt((ball 1 . x-x)*(ball 1 . x-x)+(ball 1 . y-y)*(ball 1 . y-y));

if(d = = 0){ d = 1 };

speedX = speed *(ball 1 . x-x)/d;

speedY = speed *(ball 1 . y-y)/d;

}

x+= speedX;

y+= speedY;

}

公共函数startRun(){

this.addEventListener(事件。ENTER_FRAME,ENTER FRAME handler);

}

公共函数stopRun(){

this.removeEventListener(事件。ENTER_FRAME,ENTER FRAME handler);

}

公共函数initXy():void {//初始化项目符号开始的位置。

var xy:Number = math . random();

if(xy & lt;0.25) {

x = xy * 550 * 4;

y =-10;

} else if(xy & lt;0.5) {

x = 560

y =(xy-0.25)* 400 * 4;

} else if(xy & lt;0.75) {

x =(xy-0.5)* 550 * 4;

y = 410;

}否则{

x =-10;

y =(xy-0.75)* 400 * 4;

}

}

}

}

然后用fla文件初始化两个类:

导入flash . text . *;

导入flash . net . *;

var ball:ball 1 = new ball 1(stage);//定义ball1

var ball list:Array = new Array();//定义balllist数组

for(var I:int = 0;我& lt20;I++) {//实例化balllist

ballList.push(新ball 2(ball));

addChild(ball list);

ball . ball list = ball list;

}

addChild(球);

var lable:TextField = new TextField();

lable.text = " sliz

lable.x = 530

lable.y = 380

addChild(标签);

lable . addevent listener(mouse event。点击,CLICK handler);

函数clickHandler(事件:MouseEvent ):void {

navigateToURL(新URLRequest ("/space/?534614" ) );

}

//我复印了两份,一份给你,一份给我。我也在学习。