基于安卓系统的飞机大战flash游戏制作flash论文计算机论文Word下载.docx
《基于安卓系统的飞机大战flash游戏制作flash论文计算机论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于安卓系统的飞机大战flash游戏制作flash论文计算机论文Word下载.docx(8页珍藏版)》请在冰点文库上搜索。
![基于安卓系统的飞机大战flash游戏制作flash论文计算机论文Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/e298f538-500c-4e91-ba35-d39c0d47a113/e298f538-500c-4e91-ba35-d39c0d47a1131.gif)
用来通知Flash显示图形和其它项目元素的时间,也可以使用时间轴指定舞台上各图形的分层顺序。
(3)库面板:
显示Flas档中媒体元素列表的位置。
(4)ActionScript代码:
用来向文档中的媒体元素添加交互式内容,向应用程序添加逻辑,根据用户的操作采取不同的工作方式。
要在Flash中构建应用程序,可以使用Flash绘图工具创建图形,将其它媒体元素导入Flas档,定义如何以及何时使用各元素来实现应用程序的功能。
所使用的开发工具FlashBuilder是一个由Eclipse平台扩展而成的集成开发环境(IDE),用来开发互联网应用程序(RIA)和跨平台应用程序,尤其是AdobeFlash平台的应用。
1、游戏分析与设计
本文以传统的飞机大战为实例,游戏主要模块类的功能如下所示:
(1)Config用来配置游戏各种参数;
(2)Control用来控制游戏流程执行;
(3)NumPanel是计时数字显示界面;
(4)Welcome是欢迎界面;
(5)Fail是失败提示界面;
(6)GameScene是游戏主界面,游戏操作主要靠这个类完成。
(7)Tools是工具类,提供各种快捷功能方法。
1.1、游戏规则设计
在游戏过程中,有个数字界面以秒为单位记录游戏时间。
游戏失败后会重新开始计时。
游戏时间越长,飞机的数量和速度就会更多更快。
设置的游戏参数主要是飞机的速度、数量以及速度增加的情况,根据个人情况而定。
本游戏是躲避类游戏,点击屏幕进入游戏界面,游戏开始运行并计时。
如果飞机碰撞则显示游戏失败,返回开始界面,再次点击游戏可继续进行。
可以进入设置界面打开设置项,选择或改变参数。
设置返回后游戏继续进行。
1.2、游戏界面设计
1.2.1、游戏失败提示界面
Fail游戏失败提示界面会频繁出现,所以做成单例来精简游戏性能。
此界面实现功能的流程:
第一次调用时初始化该界面,一个半透明背景以及一个失败提示文字图片。
当调用show方法时,会控制背景和文字渐现出来,同时返回自己,让调用方将自己添加到合适的容器内。
渐现完成后便添加鼠标监听,单击屏幕后会继续渐隐直到消失,抛出游戏开始,游戏操作界面监听到开始后会重新开始游戏。
1.2.2、游戏欢迎界面
Welcome欢迎界面只出现一次,不必做成单例。
这个类的功能是在游戏开始时,渐现出现游戏名称,并作鼠标的监听。
此时如果点击屏幕,会渐隐欢迎界面。
渐隐结束后,将自己从父级容器中移除,同时抛出游戏开始。
2、游戏开发与实现
2.1、游戏工程创建
先用FlashBuilder创建一个游戏项目。
FlashBuilder不仅支持Flash本身,还能将Flash转换为手机游戏安装包。
游戏项目创建如图1所示。
图1游戏项目创建
打开创建项目工程窗口,可在桌面上创建flight飞机大战工程。
2.2、游戏工程的设置
游戏工程创建完成后,还需要把素材添加到工程中。
在游戏工程文件夹中可创建如下三个文件夹。
fla文件夹放置游戏素材的flash源文件,lib文件夹放置导出的swc素材,p12文件夹放置打包安卓所需要的打包证书。
进入src文件夹创建一个assets文件夹,将其他资源图片命名好后放到assets目录下。
回到FlashBuilder,打开工程属性面板,将lib目录添加到项目中,这样工程就能引用lib下的swc文件。
至此,游戏的工程设置和创建全部完成。
2.3、游戏的主类
Main类是游戏的主类,具体如图2所示,同时也是游戏的执行入口。
首先需要做舞台初始化监听,当舞台创建完成后才能继续进行下一步动作。
图2游戏主类
2.4、游戏的流程控制类
Control是游戏的流程控制类,是一个单例,具体如图3所示。
在游戏过程中,通过这个类发出一些命令,做出相应的改变。
这个类可在游戏开始时初始化资源类的配置,然后提供一个游戏开始以及抛出的功能,最后启动欢迎界面。
因为欢迎界面只出现一次,所以直接与游戏操作界面叠加,用过之后直接销毁即可。
2.5、游戏操作编程实现
2.5.1、检测飞机是否发生碰撞
检测碰撞时,需要将玩家操作的飞机和每一个敌机做碰撞检测。
当检测到一个碰撞后,停止游戏所有的监听,这样就不能继续操作玩家飞机,所有其它的飞机也会停止,同时添加游戏失败提示界面。
图3Control控制类
//检测玩家的飞机是否与敌方飞机发生碰撞
len=_planeOther.length;
for(i=0;
ilen;
i++){
if(_plane.bitmapData.hitTest(newPoint(_plane.x,_plane.y),
255,_hitPlane,newPoint(_planeOther[i].x,_planeOther[i].y-
_planeOther[i].height),255)){
//检测到发生碰撞,游戏失败,停止所有操作,展示失败界面
_isFail=true;
this.removeEventListener(Event.ENTER_FRAME,
enterFrame);
this.removeEventListener(MouseEvent.MOUSE_DOWN,
mouseDown);
this.removeEventListener(MouseEvent.MOUSE_MOVE,
mouseMove);
this.removeEventListener(MouseEvent.MOUSE_UP,
mouseUp);
_uiLayer.addChildAt(Fail.getInstance.show(),0);
return;
}}
碰撞检测算法主要有基于距离的碰撞检测和基于显示对象的碰撞检测。
Flash影片剪辑里有一个内置的方法hitTest。
现在它已经被更合理地分成两种的方法,hitTestObject方法用于测试一个显示对象(精灵、影片剪辑等)是否碰撞到另外一个,hitTestPoint方法用来检测一个指定的点是否碰撞到一个显示对象。
基于距离的碰撞检测的基本思路是:
两个对象各做一个外接包围圆,两个圆心的距离如果小于两圆半径之和就可以判定这两个圆发生碰撞。
2.5.2、判断飞机要不要加速
当前时间减去上一次速度发生变化的时间,如果这个差值大于速度变化的间隔时间,那么就表示需要加速。
然后为当前速度加上速度增加量,如果速度超出上限,可以按最大值处理。
//判断添加飞机的间隔时间是否发生改变
if(newTime-_planeChangeTimeConfig.planeChangeTime){
_curShowPlaneTime-=Config.planeTimeDel;
if(_curShowPlaneTimeConfig.showPlaneTimeMin){
_curShowPlaneTime=Config.showPlaneTimeMin;
}
_planeChangeTime=newTime;
}
3、结语
经过对系统进行测试和运行,得知游戏系统性能具有界面友好、操作方便、功能较完善等优点。
游戏过程中的消息响应处理很快,且系统整体运行稳定。
由于开发时间等方面的原因,该系统还可以在游戏音效、元素类型、游戏界面美工等方面予以完善。
参考文献
[1]赵亮,张维.基于Android技术的界面设计与研究[J].电脑知识与技术,2009,5(29):
8183-8185.
[2]王丰,付明栋,冯海亮,等.智能终端图形用户界面设计与实现[J].广播电视信息,2008(8):
29-31.
[3]EithPeters.FlashActionScript3.0动画教程[M].:
人民邮电出版社,2008.
[4]靳言,姚尚朗.GoogleAndroid开发入门与实战[M].:
人民邮电出版社,2009.
[5]公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):
85-89.