陈雨婕
(甘肃工业职业技术学院,天水 741025)
基于ActionScript 3.0的Flash游戏开发探讨
陈雨婕
(甘肃工业职业技术学院,天水 741025)
随着Flash软件的发展和强大的ActionScript 3.0面向对象语言的推出,大大地提高游戏开发的效率。针对目前Flash游戏开发存在的问题,设计基于ActionScript 3.0的游戏开发流程,并对游戏开发中的关键问题即ActionScript 3.0代码设计和游戏封装进行详细的设计,使得开发过程清晰快捷,代码易于维护便于扩展,从而提高游戏的开发效率。
ActionScript 3.0;Flash;游戏开发
Flash游戏又称Flash小游戏,由于它体积小、传播快、画面美观、操作方便等优点,已逐渐被广大网友所喜爱。近年来,Flash小游戏已成为大家休闲娱乐的方式之一,同时它也吸引了大量游戏开发者投身其中。Flash被称为是“最灵活的前台”,同时它也是最小的前台,其凭借灵活的界面设计和强大的ActionScript 3.0(简称AS3)脚本语言,使得交互式网页游戏的开发变得简便而快捷。但是目前在Flash游戏的开发中仍然存在许多问题,尤其是对于初学者,如果在开发中没有一个清晰的流程,不仅会使游戏的开发变得复杂还会使代码的维护变得困难,因而设计一个合理的开发流程在整个游戏的开发中显得尤为重要。
Flash游戏开发的核心问题是用AS3代码去控制Flash游戏中的交互对象,因而AS3代码的设计和编写是整个开发中的难点,笔者认为在开发中应做好顶层设计,由小到大逐个完成模块的基本逻辑功能,由简单到复杂逐步完善作品的扩展功能和特殊效果,一般来讲会遵循以下流程:
素材的准备→主类文件的设计→文档的链接→逻辑功能的测试→封装游戏→添加游戏扩展功能→添加游戏效果→修改游戏→发布完成。
(1)素材的准备。指游戏中需要的图片、声音、可交互的影片剪辑等,素材可以自己动手制作也可以通过网络资源寻找。
(2)主类文件的设计。将用于控制游戏中交互元素的AS3代码单独放在一个类文件中,该文件的代码可实现交互元素在场景中的放置和整个游戏的逻辑功能。
(3)文档的链接。是指将Flash文档与类文件通过Flash属性窗口进行链接。
(4)逻辑功能的测试。是指文档链接后,在Flash文件中对AS3代码的测试,测试时应分别对功能模块的各种可能性进行逐一测试,不断地修改语法错误和逻辑错误,直到实现整个游戏的逻辑功能。最后要检测游戏结束,这也是完成游戏的出口。
(5)封装游戏。当游戏的整个逻辑功能完成后,就有了一个完整的Flash游戏影片,这时通过封装游戏来创建游戏的开始、载入和结束界面。
(6)添加游戏扩展功能。在完成游戏的基本功能之后,为了使其功能尽可能的全面,往往会用AS3代码添加游戏的扩展功能,例如在游戏中添加时间、得分、交互对象移动的步数等。
(7)添加游戏效果。为了使游戏看起来更炫,往往会添加一些动画的触摸效果、响应声音、时间限制等,这样不会改变游戏的基本配置,但会让游戏对玩家更有吸引力。
(8)修改游戏。是指在完成整个游戏之前对游戏的改进,例如光标的设置、帧频的修改、游戏元素的改进,代码中参数的设置等。
(9)发布完成。最后通过Flash的“发布设置”和“发布”命令对游戏进行发布完成。
以上就是Flash游戏的开发流程与规划方法,如果在开发游戏的过程中能够遵守这样的程序和步骤,可以使得开发过程清晰而快捷,不过上面的步骤也不是一成不变的,可以根据实际情况来调整。
2.1 AS3代码的设计
在游戏开发中,最为重要的就是AS3程序代码的设计。AS3代码可以写在单独的类文件中,也可以写在时间轴上。一般用于控制舞台上的游戏元素和影片剪辑元件动画的代码往往放在单独的类文件中,而用于控制界面之间跳转的代码会放在主时间的帧上。在游戏设计中除了有为影片剪辑写的元件类文件之外,还必须要有一个主类文件,它用于和Flash文档连接,能够完成游戏的所有逻辑功能。类文档构架设计如下:
这里需要注意以下几点:
(1)类文件名、类名与构造函数名应同名,当程序运行时会首先执行构造函数中的代码,构造函数一般会进行变量的初始化和在舞台放置游戏元素,并添加用于交互对象的侦听。当侦听事件响应后会调用相应的事件处理函数。
(2)在事件处理函数中会实现相应的游戏逻辑功能。
(3)在代码的编写中要尽可能的模块化,用函数完成相应功能,以提高代码的可重用性。
(4)代码应编写、测试同步进行。完成一个功能测试一个功能,一个功能完成后再编写下一个功能,而不是所有的代码写完后才进行测试,这样就能够避免当程序代码很长时,一旦出现逻辑错误却搞不清楚错误出现在什么位置,从而延长了开发的时间。
(5)在代码的测试中,可以在相应的位置中使用trace语句来显示结果,从而判断逻辑结果是否正确,例如当满足游戏结束的条件时,可用trace(“Game Over”);来判断游戏结束逻辑功能是否正确。
2.2 游戏的封装
当主类文件MyGame.as完成游戏所有的逻辑功能后,就有了一个完整的游戏影片,当影片运行时,游戏初始化并启动,但这并不符合游戏的设计要求。通常Flash游戏至少需要三个界面,即游戏的介绍界面、游戏的载入界面和游戏的结束界面,这时就需要封装游戏。我们可以在主时间轴上用三帧来分别设置这三个界面。
(1)第一帧为游戏的介绍界面。在这一帧上除了设计好介绍界面的场景之外,还应放置一个“开始游戏”的按扭play_btn,单击该按扭可以将界面跳转到第二帧即游戏界面。设置一个专门的代码图层,在该图层的第一帧上写如下代码:
(2)第二帧为游戏界面。在这一帧上需要解决的问题是如何链接主类文件MyGame.as文件,在这里可使用两种方法来实现。
方法一:首先取消类文件MyGame.as与Flash文档之间的链接,然后在第二帧最左上角即坐标原点放置一个空的影片剪辑,通过设置该影片剪辑的属性,使其链接到类文件MyGame.as上。
方法二:保持类文件MyGame.as与Flash文档之间的链接,取消主类文件中的构造函数即将构造函数MyGame更名,如startGame(),在代码层的第二帧即游戏界面中调用该函数,即在第二帧写代码:startGame();,这时主类文件中没有了构造函数因而程序运行时不会自动运行startGame()函数,而是进入游戏介绍界面执行主时间轴上第一帧的代码,当单击“开始游戏”按扭跳转到第二帧,在第二帧调用startGame()函数来启动游戏,进入游戏界面。
无论使用哪种方法,都实现了Flash与Action-Script类文件的链接,也保证了代码的独立性,便于代码的维护。
(3)第三帧是游戏结束界面。在类文件中如果满足游戏结束条件,通过游戏的出口跳转到这一帧,该帧会提示游戏结束,显示游戏成绩、时间等信息,另外还要有一个“重玩游戏”的按扭replay_btn,单击该按扭会重新跳转到第二帧进行游戏。在代码层的第三帧写如下代码:
合理的开发流程和框架设计不仅能使开发过程清晰简单,而且保证了AS3代码的独立性,使得代码易于维护便于扩展,从而提高了游戏的开发效率。
[1] (美)Gary Rosenzweig.ActionScript 3.0游戏编程(第2版)[M].胡蓉,张东宁,朱栗华译.北京:人民邮电出版社,2013
[2] 孙颖.Flash Action 3殿堂之路[M].北京:电子工业出版社,2007
[3] 徐浙君,俞淑燕.基于ActionScript 3.0的游戏设计框架探索[J].计算机与现代化,2010(3):84~86
Research on the Flash Game Development Based on ActionScript 3.0
CHEN Yu-jie
(Gansu Industry Polytechnic College,Tianshui 741025)
With the development of Flash software and powerful object oriented language of ActionScript 3.0,greatly improves the efficiency of game development.Aims at the problems existing in the Flash game development,designs the process of game development based on Action-Script 3.0,and offers the detail design of the key problems which are ActionScript 3.0 code design and game package in game development,makes the development process fast and clear,the code is easy to maintain and expand,thereby increases the efficiency of the development of the game.
ActionScript 3.0;Flash;Game Development
1007-1423(2015)01-0016-03
10.3969/j.issn.1007-1423.2015.01.004
陈雨婕(1974-),女,四川成都人,副教授,硕士,研究方向为网络安全、语言编程、动画技术
2014-11-25
2014-12-05