當前位置:遊戲中心平台 - 遊戲盒子 - FLASH as3制作飛機遊戲教程

FLASH as3制作飛機遊戲教程

用純as3腳本實現飛機類型遊戲

當遊戲結束時點擊左上角xxms重新開始遊戲,有2個類,壹個是自己,壹個是敵人。自己類取名Ball1.as:

package {//ball1類是玩家操作的ball

import flash.display.*;

import flash.events.*;

import flash.text.*;

import flash.utils.*;

public class Ball1 extends Sprite {

public var lable:TextField=new TextField();

public var speed:int=60;

public var stage1:Stage;

public var ballList:Array=new Array();

public var timer:Timer=new Timer(1);

public function Ball1(stage1:Stage) {

this.stage1=stage1;

init();

}

public function init():void {//初始化

stage1.addChild(lable);

graphics.lineStyle(1,0);

graphics.drawCircle(0,0,10);

x=stage1.stageWidth/2;

y=stage1.stageHeight/2;

stage1.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);

stage1.addEventListener(Event.ENTER_FRAME,enterFrameHandler2);

timer.start();

timer.addEventListener(TimerEvent.TIMER, timerHandler);

}

public function timerHandler(e:TimerEvent):void{

lable.text=""+e.target.currentCount+"ms";

}

public function mouseDownHandler(e:Event):void {

stage1.addEventListener(Event.ENTER_FRAME,enterFrameHandler1);

stage1.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);

}

public function mouseUpHandler(e:Event):void {

stage1.removeEventListener(Event.ENTER_FRAME,enterFrameHandler1);

stage1.removeEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);

}

public function enterFrameHandler1(e:Event) {//控制ball的運動

var speedX:int=speed*(stage1.mouseX-x)/Math.sqrt((stage1.mouseY-y)*(stage1.mouseY-y)+(stage1.mouseX-x)*(stage1.mouseX-x));

var speedY:int=speed*(stage1.mouseY-y)/Math.sqrt((stage1.mouseY-y)*(stage1.mouseY-y)+(stage1.mouseX-x)*(stage1.mouseX-x));

var x1:int;

var y1:int;

if (Math.abs(speedX)<Math.abs(stage1.mouseX-x)) {

x1=x+speedX;

} else {

x1=stage1.mouseX;

}

if (Math.abs(speedY)<Math.abs(stage1.mouseY-y)) {

y1=y+speedY;

} else {

y1=stage1.mouseY;

}

if (x1<0) {

x=0;

} else if (x1>stage.stageWidth) {

x=stage.stageWidth;

} else {

x=x1;

}

if (y1<0) {

y=0;

} else if (y1>stage.stageHeight) {

y=stage.stageHeight;

} else {

y=y1;

}

}

public function enterFrameHandler2(e:Event):void {//判斷遊戲是否結束

for (var i:int; i<ballList.length; i++) {

if (Math.sqrt((x-ballList.x)*(x-ballList.x)+(y-ballList.y)*(y-ballList.y))<15) {

timer.reset();

for (var j:int; j<ballList.length; j++) {

ballList[j].stopRun();

}

lable.addEventListener(MouseEvent.CLICK,clickHandler);

break;

}

}

}

public function clickHandler(e:MouseEvent):void {//控制遊戲開始

for (var j:int; j<ballList.length; j++) {

ballList[j].initXy();

ballList[j].startRun();

}

lable.text="";

x=stage1.stageWidth/2;

y=stage1.stageHeight/2;

timer.start();

lable.removeEventListener(MouseEvent.CLICK,clickHandler);

}

}

}

敵人類Ball2.as:

package {//ball2類,可以用作敵人的子彈

import flash.display.*;

import flash.events.*;

public class Ball2 extends Sprite {

public var ball1:Sprite;

public var speed:int=30;

public var speedX:int=0;

public var speedY:int=0;

public function Ball2(ball1:Sprite) {

this.ball1=ball1;

init();

initXy();

startRun();

}

public function init():void {//初始化

graphics.lineStyle(1,0);

graphics.drawCircle(0,0,5);

}

public function enterFrameHandler(e:Event){//控制子彈的運動

if(Math.random()<0.1){

var d:int=Math.sqrt((ball1.x-x)*(ball1.x-x)+(ball1.y-y)*(ball1.y-y));

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

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

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

}

x+=speedX;

y+=speedY;

}

public function startRun(){

this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);

}

public function stopRun(){

this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);

}

public function initXy():void {//初始化子彈開始的位置

var xy:Number=Math.random();

if (xy<0.25) {

x=xy*550*4;

y=-10;

} else if (xy<0.5) {

x=560;

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

} else if (xy<0.75) {

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

y=410;

} else {

x=-10;

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

}

}

}

}

然後用壹個fla文件把2個類初始化:

import flash.text.*;

import flash.net.*;

var ball:Ball1=new Ball1(stage);//定義ball1

var ballList:Array=new Array();//定義balllist數組

for (var i:int=0; i<20; i++) {//實例化balllist

ballList.push(new Ball2(ball));

addChild(ballList);

ball.ballList=ballList;

}

addChild(ball);

var lable:TextField=new TextField();

lable.text="sliz";

lable.x=530;

lable.y=380;

addChild(lable);

lable.addEventListener( MouseEvent.CLICK , clickHandler );

function clickHandler( event:MouseEvent ):void {

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

}

//復制了兩份,妳壹份我壹份,我也在學

  • 上一篇:《植物大戰僵屍》中的僵屍有多少種?
  • 下一篇:森林-地塊線分析的詳細說明
  • copyright 2024遊戲中心平台