ActionScript 3.0游戏设计基础


ActionScript 3.0游戏设计基础

文章插图
ActionScript 3.0游戏设计基础【ActionScript 3.0游戏设计基础】本书涵盖了Flash 游戏设计中的所有基础主题,包括游戏图形的製作、AS3.0语法基础、事件机制、碰撞检测、物理模拟、滚屏系统、AI(人工智慧)基础,以及嵌入游戏音效 。
基本介绍书名:ActionScript 3.0游戏设计基础
作者:【加】斯白(Spuy,R.V.D.)
译者:大漠穷秋
ISBN:978-7-121-20241-4
页数:652
定价:99.00元
出版社:电子工业出版社
出版时间:2013年5月
装帧:平装
开本:16开
编辑推荐1.选择AS3.0的理由:它是目前最好的跨平台游戏开发工具,同时适用于Web、桌面与移动设备;配备完整、可协同的工具链;对初学者最为友好 。
ActionScript 3.0游戏设计基础

文章插图
2.作者推崇与践行的观点:本书书名中所谓“基础”,是指通过对其的学习与实践,足可驾驭任何曾经听起来高不可攀的游戏製作技术主题 。内容提要对于每一章的内容,在本书的随书原始码中都提供了完整的代码和可运行的示例 。读者可以跟随作者的思路,从最简单的游戏开始循序渐进地向前推进,最终构建出比较大型的Flash 游戏 。由于本书的原作者本身就是一位高校的老师,因此,本书的内容由浅入深,知识丰富,非常适合读者自学或者作为高等学校的教材使用 。书本目录第 1 章编程基础:如何製作视频游戏1.1 基本要求............................................................................................................21.1.1 一台计算机................................................................................................................21.1.2 图形设计软体............................................................................................................21.1.3 计算机编程软体........................................................................................................31.1.4 Adobe Flash Professional.....................................................................................51.2 你需要知道的东西..............................................................................................61.3 你不需要知道的东西..........................................................................................61.4 一切都与编程有关..............................................................................................71.5 编程?可是我的数学很烂!.............................................................................81.6 我已经知道怎幺编程了!..............................................................................81.6.1 我能製作何种类型的游戏?....................................................................................91.6.2 学习新术语................................................................................................................91.6.3 打好基础....................................................................................................................91.7 使用FlashBuilder..............................................................................................101.7.1 设定Flash Builder 的工作环境...............................................................................111.8 编写你的第一个程式.................................................................................191.9 ActionScript 档案和.as 扩展名......................................................................191.10 开始编程!...............................................................................................211.10.1 关于sprite 的一点小魔法....................................................................................231.10.2 不要忽略类!........................................................................................................251.10.3 使用构造方法........................................................................................................271.10.4 对齐代码................................................................................................................29 1.11 您的指令是什幺?............................................................................................311.12 为代码添加注释...........................................................................................331.13 运行你的程式并编译SWF 档案..............................................................351.13.1 在你编译程式的时候发生了什幺?....................................................................371.14 不能运行?..................................................................................................391.14.1 一些常见的错误信息............................................................................................421.14.2 使用原始的源档案校对你的程式........................................................................441.15 关于Flash Builder 的更多内容.......................................................................441.15.1 编辑视窗的怪癖和特性........................................................................................441.15.2 透视图....................................................................................................................481.16 关于AS3.0 和Flash Player 的更多内容....................................................501.17 命名约定............................................................................................521.18 本章小结..............................................................................................53 第2 章製作游戏图形2.1 创建游戏世界背景.................................................................................572.1.1 在Photoshop 中新建档案.......................................................................................572.1.2 绘製天空..................................................................................................................602.1.3 绘製山峦..................................................................................................................712.1.4 使用钢笔工具绘图..................................................................................................732.1.5 複製、修改以及排列图层......................................................................................832.1.6 斜面和浮雕..............................................................................................................872.1.7 使用矩形选择工具製作箱子..................................................................................912.2 製作游戏角色................................................................................................962.2.1 创建档案..................................................................................................................972.2.2 绘製角色..................................................................................................................972.3 製作按钮............................................................................................100 2.3.1 新建一个档案........................................................................................................1002.3.2 绘製按钮................................................................................................................1002.3.3 使用文字工具........................................................................................................1032.3.4 製作其他按钮........................................................................................................1042.3.5 保存作品并製作PNG 档案..................................................................................1072.4 检查你的作品.........................................................................................1082.5 关于Photoshop 的更多内容......................................................................1092.6 本章小结.............................................................................................................110第 3 章为对象编程3.1 可我有点害怕编程!........................................................................................1123.2 载入并显示图片.................................................................................................1133.2.1 新建AS3.0 项目....................................................................................................1143.2.2 理解配置档案........................................................................................................116 3.2.3 用元数据标籤设定Flash Player........................................................................... 1173.2.4 载入并显示background.png.................................................................................1193.2.5 这段代码的工作原理是什幺?............................................................................1223.2.6 变数........................................................................................................................1233.2.7 变数类型................................................................................................................1243.2.8 创建空盒子............................................................................................................1253.2.9 创建实例和对象....................................................................................................1263.2.10 在舞台中显示图像..............................................................................................1293.2.11 理解代码结构......................................................................................................1353.2.12 在舞台上定位Sprite............................................................................................1363.3 为按钮编程...............................................................................................1443.3.1 理解点标记............................................................................................................145 3.3.2 方法........................................................................................................................1453.3.3 使用方法调用........................................................................................................1463.3.4 使用函式定义........................................................................................................1473.3.5 使用基本方法........................................................................................................1493.3.6 理解事件和事件监听器........................................................................................1533.3.7 让按钮运行起来....................................................................................................1613.4 利用属性控制Sprite 对象.......................................................................1623.4.1 上下移动.........................................................................................................1643.5 渐进移动...............................................................................................1663.5.1 跟蹤输出................................................................................................................1673.5.2 使用递增和递减运算符........................................................................................1683.5.3 限制移动................................................................................................................169 3.5.4 变大和变小............................................................................................................1723.5.5 消失!....................................................................................................................1753.5.6 旋转........................................................................................................................1793.5.7 更多的属性?........................................................................................................1813.6 Sprite 居中...............................................................................................1813.7 代码小结.................................................................................................1863.8 本章小结.........................................................................................191第 4 章决策4.1 使用文本..........................................................................................1934.1.1 新建项目................................................................................................................1934.1.2 需要导入的类........................................................................................................1954.1.3 创建TextFormat 和 TextField 对象...................................................................1964.1.4 设定文本格式........................................................................................................197 4.1.5 配置并显示输出文本............................................................................................1994.1.6 配置并显示输入文本框........................................................................................2024.2 编写简单的猜数字游戏...............................................................................2054.2.1 理解游戏的结构....................................................................................................2064.3 学习关于变数的更多内容........................................................................2084.3.1 监听按键................................................................................................................2114.4 决策..........................................................................................................2144.4.1 显示游戏状态........................................................................................................2204.5 使用后缀操作符改变同一个变数的值..........................................................2224.5.1 字元串连线............................................................................................................2244.5.2 嗨,为什幺必须要用gameStatus 变数呢? ........................................................2274.5.3 uint 型变数与int 型变数.......................................................................................2274.5.4 游戏的输赢............................................................................................................228 4.5.5 利用方法将程式模组化........................................................................................2344.6 润色............................................................................................................2354.6.1 处理随机数............................................................................................................2364.6.2 禁用回车键............................................................................................................2404.7 製作漂亮的按钮................................................................................2424.7.1 理解一些概念........................................................................................................2444.7.2 载入图片并显示按钮............................................................................................2454.7.3 理解滑鼠事件........................................................................................................2474.8 将按钮添加到猜数字游戏中.................................................................2534.8.1 在游戏结束时禁用按钮........................................................................................2554.8.2 管理複杂的代码....................................................................................................2624.9 项目扩展...........................................................................................................2624.9.1 製作Play again 按钮.............................................................................................263 4.9.2 跟蹤玩家的猜测....................................................................................................2644.9.3 添加视觉效果........................................................................................................2644.9.4 逆向思维................................................................................................................2644.10 嵌入字型快速指南.......................................................................................2654.11 本章小结........................................................................................................267第 5 章控制游戏角色5.1 使用键盘控制玩家的游戏角色....................................................................2685.1.1 键盘操控——错误的方式!................................................................................2695.1.2 键盘操控——正确的方式!................................................................................2735.1.3 按照指定的速度移动............................................................................................2765.1.4 使用新的keyDownHandler...................................................................................2775.1.5 使用keyUpHandler................................................................................................2785.1.6 使用enterFrameHandler........................................................................................279 5.1.7 设定舞台边界........................................................................................................2815.1.8 到达舞台边缘时禁止移动....................................................................................2825.1.9 萤幕环绕................................................................................................................2865.2 嵌入图片.....................................................................................................2885.3 滚动......................................................................................................2905.3.1 源码分析................................................................................................................2955.3.2 更好地滚动............................................................................................................2985.3.3 再好一点的滚动....................................................................................................3055.4 更进一步...............................................................................................3085.4.1 视差滚动................................................................................................................3095.5 本章小结..............................................................................................315第 6 章碰撞检测使用hitTestObject 进行基本的碰撞检测.........................................................................316 使用hitTestObject.............................................................................................................3216.1 触髮状态变化.............................................................................................3236.1.1 降低血量条............................................................................................................3276.1.2 利用scaleX 按照百分比缩放血量条...................................................................3306.1.3 刷新得分................................................................................................................3316.1.4 检测游戏是否结束................................................................................................3366.1.5 拿起和放下对象....................................................................................................3386.2 关于hitTestObject 的坏讯息...................................................................3436.2.1 使用边界框检测碰撞............................................................................................3446.2.2 学会和hitTestObject 共处.....................................................................................3456.2.3 创建子对象............................................................................................................3466.2.4 高级碰撞检测策略................................................................................................350 6.3 使用基于矢量的碰撞检测................................................................................3516.3.1 防止对象重叠........................................................................................................3516.3.2 编写Collision 类...................................................................................................3576.3.3 换个角度再看方法、实参和形参........................................................................3626.3.4 Collision.block 方法解析.......................................................................................3646.4 本章小结....................................................................................................371第 7 章製作游戏7.1 製作游戏图形..........................................................................................3737.1.1 製作带纹理的箱子................................................................................................3747.1.2 製作地雷................................................................................................................3887.1.3 製作游戏角色........................................................................................................3967.1.4 设计游戏背景........................................................................................................4067.1.5 製作Game Over 图形............................................................................................407 7.2 游戏编程.....................................................................................................4097.2.1 处理大量对象........................................................................................................4107.2.2 到底什幺是类?....................................................................................................4117.2.3 TimeBombPanic 套用类解析................................................................................4167.2.4 向游戏中添加对象................................................................................................4237.2.5 舞台边界................................................................................................................4257.2.6 角色和箱子之间的碰撞........................................................................................4267.2.7 排雷........................................................................................................................4267.2.8 使用定时器............................................................................................................4277.2.9 结束游戏................................................................................................................4317.3 创建可滚动的游戏环境..............................................................................4347.3.1 让你的作品準备滚动............................................................................................435 7.3.2 向游戏中添加对象................................................................................................4367.3.3 滚动游戏的边界....................................................................................................4387.4 本章小结...........................................................................................................442第 8 章製作更大型的游戏8.1 理解游戏的结构...........................................................................................4448.1.1 使用私有变数和方法............................................................................................4478.2 游戏编程.............................................................................................................4498.2.1 让LevelOne 访问stage.........................................................................................4498.2.2 确保LevelOne 位于舞台上..................................................................................4518.2.3 LevelOne 类...........................................................................................................4538.2.4 对游戏角色编程....................................................................................................4618.2.5 对怪物编程............................................................................................................4688.2.6 对星形武器编程....................................................................................................475 8.2.7 检测关卡是否结束................................................................................................4848.2.8 结束关卡................................................................................................................4858.2.9 使用removeChild 彻底删除对象.........................................................................4928.2.10 通过派发事件在类之间进行通信......................................................................4948.2.11 事件冒泡..............................................................................................................4968.2.12 结束第一关..........................................................................................................4988.3 在第二关中向四个方向发射星星...................................................................4988.4 更多的怪物.....................................................................................................5028.4.1 在一个滚动式的游戏世界中移动对象................................................................5028.4.2 智慧型怪物................................................................................................................5198.4.3 障碍物和寻路........................................................................................................5238.5 关于游戏结构的更多内容........................................................................5238.6 本章小结..................................................................................................525 第 9 章物理引擎、循环、数组和音效9.1 使用物理模拟自然运动...............................................................................5279.1.1 用来玩物理的游戏对象类....................................................................................5289.1.2 加速度....................................................................................................................5299.1.3 摩擦........................................................................................................................5379.1.4 弹跳........................................................................................................................5399.1.5 重力........................................................................................................................5409.1.6 跳跃........................................................................................................................5439.2 为游戏添加音效.............................................................................................5499.2.1 在游戏中集成音效................................................................................................5519.2.2 循环播放音乐以及设定音量和声道....................................................................5529.3 同时操纵大量对象......................................................................................5579.3.1 使用数组................................................................................................................563 9.3.2 创建很多箱子........................................................................................................5729.3.3 在多个对象之间进行碰撞检测............................................................................5789.3.4 案例学习................................................................................................................5869.4 本章小结.........................................................................................................587第 10 章对象和角色的高级控制10.1 使用滑鼠移动对象......................................................................................59010.1.1 让对象跟随滑鼠移动..........................................................................................59010.1.2 使用缓动的方式移动对象..................................................................................59110.2 案例研究:全形度发射子弹.........................................................................59710.2.1 创建游戏对象......................................................................................................60210.2.2 让魔杖围绕仙女旋转..........................................................................................60310.2.3 360°发射星星....................................................................................................60510.3 高级玩家操控系统.................................................................................608 10.4 敌军AI 系统..........................................................................................................60810.4.1 避开玩家..............................................................................................................61210.4.2 旋转并向滑鼠发射子弹......................................................................................61310.4.3 使用定时器发射子弹..........................................................................................61710.5 案例研究:杀人蜂魔窟!..............................................................................................61810.5.1 Flash 动画以及游戏发布.....................................................................................62610.6 本章小结.........................................................................................627精彩节摘译者序从 2009 年开始,我正式开始深入学习Flash 和ActionScript 3.0 相关的技术 。当时因为一些业务需求,公司需要一些 Flash 小控制项在Web 页面上展示曲线图 。由于直接用一些商业组件可能会涉及着作权方面的问题,而且为了几个小控制项去购买大型的商业组件,从经济上来说也不合算,因此,只好自己动手 。后来,随着对 Flash 和ActionScript 3.0 的学习越来越深入,我发现原来这里有一片广阔的天地,不只是做点小控制项那幺简单 。从目前来看,纵观各种前端技术,Flash 技术体系至少在以下大方向上处于无可撼动的领先地位 。1. 视频播放这一点无须赘述,从YouTube 到YouKu,再到虾米音乐,随便打开一个以视频或者音频内容为主的站点,播放器都是Flash 。在视频播放方向上,Flash 的优势体现在如下方面:一是方便嵌入广告;二是视频分段非常方便;三是可以藉助Flash 播放器提供的GPU 加速功能调用客户端的显示卡加速,从而呈现高品质的视频画面 。2. 页游相信很多人一定还记得当年的“开心农场”,那款让你食不知味的“偷菜”游戏,实际上就是一个简单的Flash 而已 。当然,除了“偷菜”、“扫雷”、“连连看”这种比较简单的游戏之外,你还可以利用Flash 技术来构建“塔防”、“植物大战殭尸”这种比较複杂的多关卡游戏 。在页游方向上,Flash 的优势至少有以下几方面:一是完备的设计和开发工具,由于Adobe 提供了PhotoShop 和Flash CS 系列的图像和图形设计工具,还有Flash Builder 这款基于Eclipse 的开发工具 。因此,在设计和製作游戏的过程中,美工、设计人员和开发者可以很好地互动协作;二是前后端通信,Flash 提供了多种网路通信方式,在构建複杂游戏的过程中可以採用socket 的方式进行通信,完备的工具链是其他技术一时半会儿无法提供的 。3. 线上文档阅读器读者可以打开百度文库或者豆丁文库自行体验,Flash 能将Doc、PPT、PDF 一网打尽 。这里的优势主要体现在“统一”二字上,无论是何种格式的文档,只要转换成swf 格式,那幺页面上就可以用同一款阅读器进行展示 。当然,这要依赖于后台的转换工具,大家可搜寻“swftools”自行研究 。4.各种控制项有时候你可能需要一款能够上传并预览图片的控制项,也可能需要一个能实时“推送”讯息的页面组件和一个能在页面上配置流程的组件,还可能需要一个能在页面上进行滑鼠绘图的组件,等等 。这些控制项用 Flash 和ActionScript 3.0 来实现都是小菜一碟 。通过本书的学习,然后悉心研究一番周边的技术,那幺,聪明的你一定可以轻鬆驾驭以上任意一个大的主题 。正如原作者在书中一直强调的那样,你所学到的 Flash 技术绝对不会成为无用之物,那些设计模式、编程技巧可以无缝地迁移到其他任意的平台上 。有时候你甚至会发现,在不同的技术体系中,某些函式的名称都是一样的 。另外,如果读者有Java 或者C++相关的编程经验,那幺学习AS3.0 是相当轻鬆的,因为AS3.0 的基本语法和结构与这些高级语言几乎完全相同(当然,随着你学习得越来越深入,你会发现很多AS3.0 特有的地方) 。我的一个大学老师曾经说过,玩计算机玩到最后都是数学,玩算法玩到极致都是哲学传说中的“举一反三”、“触类旁通”想必就是这个意思 。读者可以从本书入门,然后去研究这一领域的各种高级主题,例如,游戏设计中最经典的“A*寻路”、“格线碰撞检测”、“物理模拟”等 。有了这本书作为基础,学习这些高级的主题会轻鬆得多 。当你开始涉及上面这些主题的时候,你就会逐渐体验到游戏设计中的数学之美 。2009 年,我刚开始涉及Flash 这个领域的时候,曾经看到有朋友推荐friendsofED的Foundation 系列 。这位仁兄发了一张截图,上面是4 本friends of ED 出的Flash 和AS3 相关的书籍,其中就有《ActionScript 3.0 游戏设计基础》这本书,在那篇推荐文章的末尾,这位仁兄来了一句“可惜这些书目前都还没有中文版” 。而就在3 年之后,我居然有幸能够翻译本书的第2 版,我不知道这是不是所谓的“机缘” 。翻译是一件苦差事,校对比翻译更苦 。感谢电子工业出版社各位编辑的辛勤劳动!感谢王平和刘洋帮忙校对书稿 。王平曾经是我的同事,就职于富士通,他精通Java,在JQuery、Extjs、Flex 等前端技术上都有很深的研究 。刘洋供职于一家涉及国土资源领域的公司,精通各种WebGIS(网路地理信息系统)方面的技术 。刘洋作为一名团队管理者,还能在百忙之中抽出时间帮我校对,真心非常感谢! 最想感谢的是我国中的 3 位英语老师,尤其是孙晓静老师 。感谢你们没有让我在学英语的时候感觉到痛苦 。有一次,孙老师说我以后可以去做翻译,当时我一笑置之,以为不过是玩笑而已 。多年以后的今天,我竟然真的能够亲手翻译完一本书,想想真是一件非常神奇的事情,或许人生真是个弯弯绕,或许这世上真有神的存在 。作者简介Rex van der Spuy 是一名自由职业者、互动媒体设计师,擅长Flash/AS3.0 游戏设计、界面设计,以及ActionScript编程 。他主要在加拿大、印度、南非这些地方游走 。在不用编写视频游戏代码的时候,他会一边弹着锡塔尔琴,一边週游世界 。媒体评论无论新技术推出多幺频繁,Flash与ActionScript在游戏领域及其他很多特定行业的垄断地位,在数年内很难被撼动 。事实上,我们并没有多少选择的余地,其他竞争者,要幺早早就被Flash淘汰,要幺因为先天缺陷或环境不成熟,而难以完成抢班夺权的重任 。而要学好Flash开发技术,老虎书的各个版本一直是最佳起点 。它既能让你产生对AS3.0的浓厚兴趣,更会让得心应手的感受伴随学习始终,更有大量案例让你提前置身于真实开发实践中!掩卷之后,再面对各种高级主题时,阅读中建立的智力优越感会神奇地延续,甚至已能开始体会登堂入室的奇美 。前言既然你想製作视频游戏,那幺你该从哪里下手呢?你需要学习哪些知识呢?你可以向谁求助呢?对于这些问题,如果你曾经问过周围其中的任意一个人,你就会知道想要找到答案是多幺困难 。很多年前,我也曾经问过自己同样的问题,那时候我还住在印度班加罗尔市(Bangalore)郊外的一个小村庄里 。当时我正在一家国际学校教程式设计和互动媒体课程 。我的所有学生都玩游戏,他们也都想自己製作游戏,但是那时候关于如何製作游戏还没有比较全面的书籍,网路上也没有相关资源 。经过一番研究之后,我发现了一件相当令人惊讶的事情:对于基础的游戏设计来说,其实只需要很少的编程相关的知识,并且在製作类型完全不同的游戏时,可以反覆使用同样的技术 。游戏设计非常有趣,效果立竿见影,并且是一件非常有创意的事情 。这番研究的结果就是,我编写了一本供内部使用的游戏设计教材,它也成了3 门高中级别课程的基础,同时也启发了这本书的写作 。在现在看来,那时候几乎是史前时代,那时候的 Flash 版本还是4 和5,ActionScript程式语言也还停留在1.0 版本上,并且Flash 中内置了一些很赞的互动式教程,那些教程会一步一步地引导新用户去学习 。那时候貌似大家都是初学者,所以很容易找到相关的书籍和教程,并且这些资料都假定读者不具备任何背景知识 。ActionScript 已经是3.0 版本了(简写为AS3.0),并且已经不像当初那幺简单 。ActionScript语言已经变得非常强大,同时也很複杂 。关于AS3.0 的很多资源,只要是你能找到的,都会重点关注那些複杂的东西 。对于初学者来说,尤其是对于那些编程经验很少的初学者来说,想要找到一个综合的立足点去开始学习变得越来越困难 。对于这一切颇具讽刺意味的是,在製作游戏方面,AS3.0 实际上比AS1.0 更加容易 。本书将会抛开AS3.0表面上那些複杂的东西而直达核心,在製作游戏的过程中,这些核心的东西都是你必须知道的内容 。製作游戏是一件非常有趣并且非常容易的事情,每个人都可以做到 。设计游戏是一件相当奇妙的事情,你即将要学习的东西就像在现实世界中变魔术一样 。抓紧缰绳,準备开始狂奔吧——你会惊讶地发现你的生产效率会变得越来越高 。关于第2 版本书的第1 版,也就是Foundation GameDesign with Flash,其中的内容几乎全部与如何使用FlashProfessional 软体来製作游戏有关 。曾几何时,使用FlashProfessional 是製作Flash 游戏的唯一方法,甚至在其他技术逐渐兴起的时候,它依然是最好的方法 。在本书第1 版出版之后大约3 年的时间里,AS3.0 焕发出了自己的生命力——它变成了最好的跨平台开发工具,可以用来为Web、桌面平台、移动设备开发游戏 。对初学者来说,学习它也是最容易的一件事情,同时它还具备了最全面、协同性最好的工具集可供利用 。对製作游戏来说,这些工具的数量比任何其他单独的技术都要多得多 。本书将会为你展示如何使用纯AS3.0 代码去构建游戏,为了保持强大的灵活性,在开发过程中还会使用大量的辅助技术 。