- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
拼图游戏ActionScript
本章将综合运用ActionScript 3.0的知识,编写一个具有一定复杂度的拼图游戏。游戏中将加载一副外部图像,并生成随机拼图。用户可以通过鼠标控制图块,也可以通过键盘控制图块。游戏还具有简单的录像功能,能够记录和还原用户的操作。
13.1? 程序分析
在开始编写游戏代码之前,需要分析游戏的功能和模块划分,确定用户的操作方式。
13.1.1? 游戏功能
游戏能够加载一副外部图像,并动态的创建游戏场景。在玩家执行游戏时,程序创建如图13-1所示的游戏场景。
图13-1? 拼图游戏场景
游戏场景中包含三种主要元素:游戏舞台、位图画板、空白画板。加载的外部位图被分割为众多小块,每个小块对应一个位图画板。空白画板是一个自由区域,允许用户将其他位图画板移动至该区域。游戏舞台提供了游戏的屏幕界面,是所有游戏元素的载体。
13.1.2? 操作分析
交互游戏必须提供交互功能。游戏中将会有鼠标控制和 键盘控制两种交互方式。当用户使用鼠标操作游戏屏幕画板时,游戏程序需要处理画板的移动。所有的位图画板都能够接受用户的鼠标单击。但是只有空白画板邻接 的位图画板才能移动。即只有空白画板上方、下方、左侧、右侧相邻的位图画板可以被移动。
鼠标控制将是游戏的主要控制方式。但是,游戏也能提供键盘控制方式。用户仅依靠四个方向键,就可以完成游戏。当用户按下方向键时,游戏能智能寻找合理的位图画板,并移动和交换该画板同空白画板之间的位置。
13.1.3? 模块划分
位图画板和空白画板具有许多相同的属性,例如大小、屏幕位置等。所以可以设计一个模块,管理位图画板和空白画板。在本例中,使用GameSlot类管理所有的屏幕画板。位图画板和空白画板都是屏幕画板。
位图画板拥有图像信息,而空白画板只包含单色填充信 息。为了操作分割成小块的位图数据,程序需要建立相应的模块。本例中将建立ImgSlot类管理位图图块,每一个位图画板都包含一个位图图块。空白画板也 包含一个位图图块,但是该图块仅包含单色填充。根据以上分析,可以将ImgSlot类的实例作为成员添加至GameSlot类中。
13.1.4? 执行过程
游戏将首先加载外部图像,并利用相关算法将其切割为小块。所有的位图图块都会以随机的次序装入屏幕画板,不能有遗漏。
在游戏场创建后,程序必须侦听用户的交互操作。用户会提供操作命令,移动屏幕画板。程序根据用户的指令,交换屏幕画板的位置。在本例中,位图画板之间不能交换,只有位图画板和空白画板之间可以交换位置。
游戏进行时,用户采用鼠标或者键盘调整屏幕画板的位置,程序要及时检查画板位置,当所有的位图画板处在正确位置时,游戏玩家就能取得胜利。
13.2? 编写游戏原型
对于功能较为复杂的项目,一般需要开发一个实现最核心功能的原型。在编写原型的过程中,实现游戏的最基本结构和功能。除了最基本的程序功能之外,原型中应该包含丰富的调试信息输出,以便于程序代码的追踪和改进。
在本例中,游戏原型被限定为最基础的程序支持功能。本节要建立的游戏原型如同一幢建筑的地基,在最终的作品中发挥基础的作用。
从编码风格的角度考察,在编写游戏原型时采用的代码更趋于清晰和易懂,而不是偏重性能和效率。
13.2.1? 创建游戏舞台
本节将详细介绍如何创建游戏的舞台。
(1)项目准备。运行Flash CS3 IDE环境。新建ActionScript 3.0项目“imgpuzzle.fla”,舞台宽度设置为550像素,高度设置为400像素。准备一幅宽390像素、高390像素的图像,命名为 “img.gif”。将图片“img.gif”同imgpuzzle.fla置于同一文件夹内。
(2)创建加载器。选中项目“imgpuzzle.fla”的第一帧,打开代码编辑器输入以下代码:
var imgpath:URLRequest=new URLRequest(img.gif);
var imgloader:Loader=new Loader();
imgloader.load(imgpath);
这段代码创建一个 Loader加载对象,用来载入外部图像文件“img.gif”。考虑到加载的速度不可能同代码的执行一致,应该在程序中使用事件侦听,处理加载成功的事 件通知。Loader类不能直接处理加载事件,必须在Loader对象的contentLoaderInfo属性对象上绑定事件侦听器。
imgloader.contentLoaderInfo.addEventListener(Event.COMPLETE,onloaddone);
这一行代码将一个名为onloaddone的事件侦听器同加载对象的Event.COMPLETE事件绑定。当图片加载完成后,FlashPlayer将发送Event.COMPLETE事件,触发该侦听器。由于是原型,此处
文档评论(0)