• 周二. 4 月 29th, 2025

物嫩软件资讯网

软件资讯来物嫩

AS3 实现简易射击游戏

admin@wunen

4 月 8, 2025



AS3 实现简易射击游戏

随便下一个版本的Animate软件(此链接2021.5.21之前有效):https://cncncloud.com/s/kQOzfa

然后一键安装,不建议安装在C盘。

教程中用的是2019。

安装之后打开软件,创建新文件。选择800 × 600,帧速率默认30,平台类型改为ActionScript 3.0。



第一帧

新建图层

在图层2和图层1后面各插入两个空白关键帧。(鼠标右键→插入空白关键帧)

插完是这样

鼠标左键单击图层1的第一帧。给矩形处理一下,用选择工具,按住鼠标左键拖出个矩形框选中,然后点上面菜单栏的修改—合并对象—联合。(为了以后选中的时候不会只选中了矩形的一个边)

插入一个静态文本“start”,用刚刚的选择工具可以移动文字位置。

用选择工具单击选中一下黑色矩形,右键转换为元件。

类型选择按钮。

在右侧的属性栏修改实例名称为

btn_start

选择图层2的第一帧,右键,动作。

在弹出的代码窗口里填入如下代码,Ctrl+S保存一下。

import flash.events.MouseEvent;

stop();
btn_start.addEventListener(MouseEvent.CLICK,StartGame);
function StartGame(e:MouseEvent):void
{
	gotoAndStop(2)
}



第二帧

选中图层1的第二帧,菜单栏“文件—导入—导入到舞台”,把你之前预先下载好的图片加入到舞台上。

可以右键图片修改一下“缩放和旋转…”

右键图片,转化为元件,类型选择影片剪辑和对齐选项,以及完成以下设置。确定之后的弹出的警告框不用管它。

之后再鼠标左键单击选中一下之后,按一下键盘上的Delete删除。

再画一个准星出来,或者像刚刚那样从外部导入一个准星。如果是自己画的,记得像之前的矩形那样用选择工具选中再联合一下。

转换为元件。

实例名称改为

tip_mc

计分:在左下角插入一个动态文本“0”,修改实例名称为

txt

倒计时:在右上角插入一个动态文本“00”,修改实例名称为

time_txt

重复第一帧时做的按钮的流程,不过这次的实例名称改为

btn_quit

。文字如果消失,选中矩形,然后右键—排列—下移一层。

选中图层2的第二帧,右键动作插入代码。

import flash.events.Event;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

var score:int=0;
var temp_tick:int=0;
var birdAry:Array=new Array();
var bird_count:int=0;
var timer:Timer =new Timer(30);
var tick:int=10*30;//10是十秒,可以自己修改
timer.addEventListener(TimerEvent.TIMER,UpdateTime);
time_txt.text=NumberToTime(tick);
timer.start();


tip_mc.mouseEnabled=false;
this.addEventListener(Event.ENTER_FRAME,UpdateView);
function UpdateView(e:Event):void
{
	Mouse.hide();
	tip_mc.x=this.mouseX;
	tip_mc.y=this.mouseY;
	temp_tick++;
	if(temp_tick==20)
	{
		temp_tick=0;
		birdAry.push(new BIRD());
		birdAry[bird_count].scaleX=birdAry[bird_count].scaleY=0.5+Math.random()*0.5;
		birdAry[bird_count].spd=2+Math.random()*2; //这是速度,可以自行调整
		birdAry[bird_count].y=100+Math.random()*200;
		birdAry[bird_count].x=(-1)*birdAry[bird_count].width;
		birdAry[bird_count].addEventListener(MouseEvent.CLICK,GetShoot);
		this.addChildAt(birdAry[bird_count],0);
		bird_count++;
	}
	for(var i:int=0;i<bird_count;i++)
	{
		if(birdAry[i].visible==true&&birdAry[i].x<800)
		{
			birdAry[i].x+=birdAry[i].spd;
		}
		if(birdAry[i].x>=800)
		{
			birdAry[i].visible=false;
		}
	}
}
function GetShoot(e:MouseEvent):void
{
	var obj:MovieClip=e.currentTarget as MovieClip;
	obj.visible=false;
	score++;
	txt.text=String(score);
}

function UpdateTime(e:TimerEvent):void
{
	tick--;
	time_txt.text=NumberToTime(tick);
	if(tick==0)
	{
	time_txt.text="Times Up!"
	timer.stop();
	removeEventListener(Event.ENTER_FRAME,UpdateView);
	removeEventListener(Event.ENTER_FRAME,GetShoot);
	timer.removeEventListener(TimerEvent.TIMER,UpdateTime);
	Mouse.show();
	gotoAndStop(3);
	for(var i:int=bird_count;i>0;i--)
	{
		this.removeChildAt(birdAry[bird_count]);
		}
	}
}

function NumberToTime(num:Number):String
{
	var temp:int=int(num/30);
	var second:int=temp;
	var str:String="";
	trace(second);
	str=String(second);
	return str;
	
}

btn_quit.addEventListener(MouseEvent.CLICK,QuitGame);
function QuitGame(e:MouseEvent):void
{
	removeEventListener(Event.ENTER_FRAME,UpdateView);
	removeEventListener(Event.ENTER_FRAME,GetShoot);
	timer.removeEventListener(TimerEvent.TIMER,UpdateTime);
	Mouse.show();
	gotoAndStop(3);
	for(var i:int=bird_count;i>0;i--)
	{
		this.removeChildAt(birdAry[bird_count]);
		}
	
}



第三帧



图层2

插入一个静态文本“your score”

插入一个动态文本“0”,实例名称为

txt2

插入一个矩形/图片,转换为元件按钮,实例名称为

btn_restart



图层1

动作

import flash.events.MouseEvent;
txt2.text=String(score);
btn_restart.addEventListener(MouseEvent.CLICK,reStartGame);
function reStartGame(e:MouseEvent):void
{
	gotoAndStop(2)
}

之后点菜单栏的“文件—导出—导出影片”(记得选择swf格式)。



排版

在这里有对齐设置


如果想加入一些辅助文字,添加的是静态文本。

tips:

按照上面的方法添加文字会导致点文字部分的时候无法跳转,得点在旁边的空白处,是个小bug,但问题不大。

如果想要修复的话,把文字删了。然后点库,元件,进入元件后在对应按钮元件上添加静态文本,然后调一下对齐。

按钮不一定非得是矩形框,你可以画各种形状,或者插入图片,转换元件的时候按照教程走就行。



参考资料:

https://jingyan.baidu.com/article/3a2f7c2ef7a9cb26afd61104.html

https://jingyan.baidu.com/article/60ccbceb8734c764cab19720.html



感谢寝室的姐妹们容忍我昨晚熬大夜……

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注