Flash小游戏毕业论文
Xxxxxxx学院 Flash小游戏制作
XXXXXXXXXXXXX学 院
毕 业 论 文
论文(设计)题目:Flash
小游戏制作
系别:xxxxxxxx
专业:xxxxxxxx
班级:xxxxxxxx
学生姓名(学号):xxxxxxxx
指导教师姓名:xxxxxxxx
论文完成日期:xxxxxxxx
摘要
随着现代科技的高速发展,短短几十年,电脑游戏得到迅猛发展。电脑游戏充分利用多媒体网络优势,拓宽了传统游戏的界限,给人们带来全新的体验。在这些游戏中,Flash游戏以其好看的动画,绚丽的声光效果,高度的通畅性,以及很强的可玩性,而受到广大青少年的青睐。
Flash软件由Macromedia公司推出,除了制作动画以外,还能实现交互功能。Flash是一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。Flash 可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。它不仅能够制作出许多眩目多彩的效果,只要你肯赋予它一定的情景,它也会模拟出现实生活中的场景。通过Flash生成的动画文件非常小,可以很好的用在网页设计及更多的领域。Flash可以采用补间形状或补间动画等多种手段,产生很复杂的动画;同时,Flash不同于gif动画,它可以附加很复杂的控制代码,从而开发出很复杂的应用,比如一些小游戏。
关键词:Flash 游戏 动画
目录
一、前言 ........................................................... - 5 -
二、Flash介绍...................................................... - 5 -
(一)Flash简介 ................................................ - 5 -
(二)Flash的特点 .............................................. - 6 -
1.Flash的特点............................................... - 6 -
(三)Flash的应用领域 .......................................... - 6 -
(四)Flash的发展方向 .......................................... - 7 -
1.应用程序开发 .............................................. - 7 -
2.软件系统界面开发 .......................................... - 7 -
3.手机领域的开发 ............................................ - 7 -
4.游戏开发 .................................................. - 8 -
5.Web应用服务............................................... - 8 -
6.站点建设 .................................................. - 8 -
7.多媒体娱乐 ................................................ - 8 -
8.教学系统 .................................................. - 8 -
三、Flash游戏的制作过程............................................ - 9 -
(一)界面设计.................................................. - 9 -
1.开始界面 .................................................. - 9 -
2.游戏界面 .................................................. - 9 -
3.帮助界面 ................................................. - 10 -
(二)代码..................................................... - 10 -
1.部分主要控制代码 ......................................... - 10 -
(1)定义变量............................................. - 10 -
(2)开始游戏............................................. - 11 -
①开始游戏 .......................................... - 11 -
②在屏幕右下角创建保护盾图标 ........................ - 12 -
③当飞机爆炸后,从屏幕左下角删除一个飞机图标 ........ - 12 -
④使用一次保护盾后,从屏幕右下角删除一个保护盾图标 .. - 12 -
⑤删除所有飞机图标 .................................. - 12 -
⑥删除所有保护盾图标 ................................ - 12 -
⑦飞机炸毁后,生成新的飞机 .......................... - 13 -
(3)按方向键控制时....................................... - 13 -
①按下方向键控制时 .................................. - 13 -
②放开方向控制键 .................................... - 14 -
③按下方向控制键时,飞机移动的方向的范围的控制 ...... - 14 -
(4)飞机碰撞后爆炸....................................... - 14 -
(5)开启3秒的保护盾..................................... - 15 -
(6)关闭保护盾........................................... - 15 -
(7)创建四组石头......................................... - 15 -
(8)激活所有岩石......................................... - 16 -
(9)子弹击中石头后....................................... - 16 -
(10)生成子弹............................................ - 17 -
(11)子弹的移动.......................................... - 17 -
(12)当子弹击中石头后,删除子弹对象...................... - 17 -
(13)检测子弹是否与石头碰撞.............................. - 18 -
(14)游戏结束,删除所有对象和监听器...................... - 19 -
2.片头开始游戏按钮代码 ..................................... - 19 -
3.再玩一次按钮代码 ......................................... - 19 -
4.帮助界面返回按钮代码 ..................................... - 19 -
四、总结 .......................................................... - 20 -
五、参考文献 ...................................................... - 21 -
六、致谢 .......................................................... - 22 -
一、前言
伴随着计算机的迅速普及,伴随着网络“触角”的迅速延伸,信息时代到来了!喜欢探索,充满幻想,渴望参与,这是人的天性。信息时代带给我们一个能够满足人类这种天性的礼物——电脑小游戏。真实感、立体感、交互性强的游戏吸引着成千上万的人,很多人迷恋上了游戏,迷恋上了计算机,迷恋上了网络,迷恋上了Flash!
电脑小游戏现在已成为社会上各界人士来放松自己,消遣时间的有效途径之一。就像前期在我们学生广为流传的《植物大战僵尸》,大部分学生在课余时间都在用这个游戏来充实自己的课余生活。小游戏和其它大型游戏的区别在于它不容易让玩家上瘾。玩家完全可以在业余时间来运用小游戏来放松自己和娱乐。
作为一种大众娱乐方式,游戏已经越来越被人们所接受,尤其是在电脑游戏方面。面对当今社会上的种种压力,偶尔玩小游戏已是现在社会各界人士来放松自己,缓解自身压力的一种有效方法。特别是在射击方面的小游戏,游戏自身的激烈的战斗与玩游戏时候玩家的心态可以使玩家重新调整心态,从而又更好的心态去工作。
鉴于上述问题的综合的考虑,也为了展示这三年来所学成果,我决定做基于Flash的射击类小游戏——宇宙大作战。
现在网络上流行的小游戏大多是运用Flash来制作的。Flash游戏是一种新兴起的游戏形式,以游戏简单,操作方便,绿色,无需安装,文件体积小等优点现在渐渐被广大网友喜爱。Flash游戏又叫Flash小游戏,因为Flash游戏主要应用于一些趣味化的、小型的游戏之上,以完全发挥它基于矢量图的优势。制作FLASH游戏需要用到ActionScript语言。利用ActionScript编程来控制场景的移动,飞机的属性和游戏中道具的作用等等。Flash是Macromedia公司的一个的网页交互动画制作工具。Flash是交互式矢量图和Web动画的标准。网页设计者使用Flash能创建漂亮的、可改变尺寸的、以及极其紧密的导航界面、技术说明以及其他奇特的效果。
二、Flash介绍
(一)Flash简介
Flash的前身是Future Wave公司的Future Splash,是世界上第一个商用的二维矢量动画软件,用于设计和编辑Flash文档。1996年11月,美国Macromedia公司收购了Future Wave,并将其改名为Flash。在出到Flash 8以后,Macromedia又被Adobe公司收购。最新版本为:Adobe Flash CS5。
(二)Flash的特点
1.Flash的特点
(1)它是基于矢量的图形系统,各元素都是矢量的,只要用少量向量数据就可以描述一个复杂的对象,占用的存储空间只是位图的几千分之一,非常适合在网络上使用。同时,矢量图像可以做到真正的无极放大。这样,无论用户的浏览器使用多大的窗口,图像始终可以完全显示,并且不回降低画面质量。
(2)它使用插件方式工作。用户只要安装一次插件,以后就可以快速启动并观看动画,而不必像:Java那样每次都要启动虚拟机。由于Flash生成的动画一般都很小,所以,调用的时候速度很快。Flash plugin也不大,只有150KB左右,很容易下载并安装。
(3)它还提供其他的一些增强功能。比如,支持位图、声音、渐变色、Alpha、透明等。拥有了这些功能,完全可以建立一个全部由Flash制作的站点。
(4)这就是说,在观看一个大动画的时候,可以不必等到影片全部下载到本地再观看,而是随时可以观看,哪怕后面的内容没有完全下载到硬盘,也可以开始欣赏动画。
(三)Flash的应用领域
Flash技术不断推陈出新,继席卷网页设计、网络广告之后,电影、电视、卡通、声乐将是它下一步引领风骚的舞台。FLASH从网络走向电影、电视、卡通、声乐,推动了传统媒体和互联网媒体的融合。网页设计者开始利用网络技术为商业、音乐电视和电视节目工作。
在网络电影领域,Flash技术自1997年由MACROMEDIA推出后,逐渐受到好莱坞制片公司的青睐,增加了微型电影和基于网络的电影制作,用它设计迷你电影与网络电影。
在电视广告领域,NETZERO公司官员日前说,最近他们运用MACROMEDIA公司的Flash软件制作了即将在黄金时段播出的电视广告宣传片,这种方式为公司节省了210万美元的制作成本。
在电视卡通剧领域,NELVANA的第一项新产品名叫"WHEN QUADS WON’T LEAVE",是世界上第一部完全由MACROMEDIA公司的FLASH软件制作的电视系列剧。Flash制作的节目可以同时在网络与电视台播出,一片两播,符合经济效益。半小时节目若用
Flash技术制作,大约3至4个月就可杀青,若是其它技术,通常需要10-14个月。 在音乐领域,FlashMV更好的提供了在唱片宣传上既保证质量又降低成本的有效途径,并且将成功的把传统的唱片宣传推广带到电脑网路的更大空间。
在游戏领域,索尼公司也宣布它将把这项技术用于制作PlayStation 2的片头。此外由于它能够减少游戏软件中的电影片段所占数据容量,因此预计将为DVD游戏软件节省更多的空间。
(四)Flash的发展方向
Flash被称为是“最为灵活的前台”,由于其独特的时间片段分割(TimeLine)和重组(MC嵌套)技术,结合ActionScitp的对象和流程控制,使得在灵活的界面设计和动画设计成为可能,同时它也是最为小巧的前台。Flash具有跨平台的特性(这点和Java一样),所以无论你处于处于何种平台,只要你安装了支持的Flash Player,就可以保证它们的最终显示效果的一致,而不必像在以前的网页设计中那样为IE或NetSpace各设计一个版本。同Java一样,它有很强的可移植性。最新的Flash还具有的手机支持功能,可以让用户为自己的手机设计喜爱的功能。当然首先必需要有支持Flash的手机,同时它还可以应用于Pocket PC。
那么,Flash可能的发展方向究竟如何?
1.应用程序开发
由于其独特的跨平台特性、灵活的界面控制以及多媒体特性的使用,使得用Flash制作的应用程序具有很强的生命力。在与用户的交流方面具有其它任何方式都无可比拟的优势。但目前的现状是:很少有人具有运用Flash进行应用程序开发这方面的经验。但这个难度会随着时间的推移而逐步减弱。
2.软件系统界面开发
Flash对于界面元素的可控性和它所表达的效果无疑具有很大的诱惑。对于一个软件系统的界面,Flash所具有的特性完全可以为用户提供一个良好的接口。
3.手机领域的开发
手机领域的开发将会对精确(像素级)的界面设计和CPU使用分布的操控能力有更高的要求,但同时也意味着更加更广泛的使用空间。
4.游戏开发
事实上,Flash中的游戏开发已经进行了多年的尝试。但至今为止仍然停留在中、小型游戏的开发上。游戏开发的很大一部份都受限于它的CPU能力和大量代码的管理。不过可喜的是,Flash Player 10运行时性能提高了很多;Actionscript 3.0的发布也使得程序更加容易维护和开发。
5.Web应用服务
其实很难界定Web应用服务的范围究竟有多大,它似乎它拥有无限的可能。随着网络的逐渐渗透,基于客户端-服务器的应用设计也开始逐渐受到欢迎,并且一度被誉为最具前景的方式。但是,这种方式开发者可能要花更多的时间在服务器后台处理能力和架构上,并且将它们与前台(Flash端)保持同步。
6.站点建设
事实上,现在只有极少数人掌握了使用Flash建立全Flash站点的技术。因为它意味着更高的界面维护能力和开发者整站架构能力。但它带来的好处也异常明显:全面的控制;无缝的导向跳转;更丰富的媒体内容;更体贴用户的流畅交互;跨平台和瘦客户端的支持;以及与其它Flash应用方案无缝连接集成等。
7.多媒体娱乐
其实,在这个方面无需再说什么。尽管它的发展速度没有像当初预言的那样迅速,但它仍然还在不断前进。Flash本身就以多媒体和可交互性而广为推崇。它所带来亲切氛围相信每一位用户都会喜欢。
8.教学系统
要在教学系统应用Flash现有的技术无疑会极大增强学生的主动性和积极发明的能力。在这方面涵盖的内容,可能所有现有技术你都可以用上了。根据你教学内容的不同你可能会选择不同的部份。Flash影片的后缀名为.swf,该类型文件必须有Flash播放器才能打开,但占用硬盘空间少,所以现在被广泛应用于游戏。
我在其中选择的是“游戏开发”,因为游戏开发的难度更大,不只是图形元素和帧的设计,更包含了控制和算法的代码,对学习来说,更有锻炼能力的价值。
三、Flash游戏的制作过程
(一)界面设计
1.开始界面
2.游戏界面
3.帮助界面
(二)代码
1.部分主要控制代码
(1)定义变量
var rockSpeedStart:Number = .03; //石头的初始速度
var rockSpeedIncrease:Number = .02;// 石头的速度增量
var missileSpeed:Number = .2; //子弹的速度
var shipRadius:Number = 20;
var thrustPower:Number = .15;
var startingShips:uint = 3; //初始化飞机数量
var ship:Ship; //定义飞机
var rocks:Array; //定义石头数组
var missiles:Array; //定义子弹数组
var lastTime:uint; //定义时间
var rightArrow:Boolean = false; //定义右方向键数组
var leftArrow:Boolean = false; //定义左方向键数组
var upArrow:Boolean = false; //定义上方向键数组
var downArrow:Boolean = false; //定义下方向键数组
var shipMoveX:Number; // 定义飞机在X方向上的速度
var shipMoveY:Number; // 定义飞机在Y方向上的速度
var delayTimer:Timer;//当一架飞机爆炸后,在下一架飞机出现前所需的时间
var shieldTimer:Timer;
var gameMode:String;
var shieldOn:Boolean;
var shipsLeft:uint;
var shieldsLeft:uint;
var shipIcons:Array; //定义飞机数量数组
var shieldIcons:Array; //定义保护盾数量数组
var scoreDisplay:TextField; //定义分数文本
var gameScore:Number; //定义游戏分数
var gameLevel:uint; //定义游戏关数
var gameObjects:Sprite; //定义游戏对象
var scoreObjects:Sprite; //定义分数对象
(2)开始游戏
①开始游戏
//保护盾持续的时间 // 定义游戏模式 //定义盾开启 function startSpaceRocks() { gameObjects = new Sprite(); //实例化游戏对象 addChild(gameObjects); scoreObjects = new Sprite();//实例化分数对象 addChild(scoreObjects); gameLevel = 1; //重置分数对象 shipsLeft = startingShips; gameScore = 0; createShipIcons(); createScoreDisplay();
addEventListener(Event.ENTER_FRAME,moveGameObjects); //设置监听器
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction);
gameMode = "delay";// 游戏开始
shieldOn = false; missiles = new Array(); nextRockWave(null); newShip(null); }
②在屏幕右下角创建保护盾图标
function createShieldIcons() {
shieldIcons = new Array();//实例化保护盾数组 for(var i:uint=0;i
③当飞机爆炸后,从屏幕左下角删除一个飞机图标
function removeShipIcon() {
scoreObjects.removeChild(shipIcons.pop());}
④使用一次保护盾后,从屏幕右下角删除一个保护盾图标
function removeShieldIcon() {
scoreObjects.removeChild(shieldIcons.pop());}
⑤删除所有飞机图标
function removeAllShipIcons() {
while (shipIcons.length > 0) {
removeShipIcon();}}
⑥删除所有保护盾图标
function removeAllShieldIcons() {
while (shieldIcons.length > 0) {
removeShieldIcon();}
}
⑦飞机炸毁后,生成新的飞机
function newShip(event:TimerEvent) {
if (ship != null) {
gameObjects.removeChild(ship); //若飞机已被实例化,则就不再实例化了 ship = null;} endGame();return; } if (shipsLeft
shieldsLeft = 3;
(3)按方向键控制时
①按下方向键控制时
function keyDownFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = true;}
else if (event.keyCode == 39) {
rightArrow = true;}
else if (event.keyCode == 38) {
upArrow = true;
if (gameMode == "play") ship.gotoAndStop(2); } else if (event.keyCode == 32) { // 按下space键,发射子弹
newMissile(); startShield(false); } else if (event.keyCode == 90) { // 按下Z键,开启保护盾 } else if(event.keyCode == 40){downArrow = true;}}
②放开方向控制键
function keyUpFunction(event:KeyboardEvent) {
if (event.keyCode == 37) {
leftArrow = false;}
else if (event.keyCode == 39) {
rightArrow = false;}
else if (event.keyCode == 38) {
upArrow = false;
if (gameMode == "play") ship.gotoAndStop(1); }else if(event.keyCode == 40){downArrow = false;}}
③按下方向控制键时,飞机移动的方向的范围的控制
function moveShip(timeDiff:uint) {
if (leftArrow) {ship.x-=10;
}
(4)飞机碰撞后爆炸
function shipHit() {
gameMode = "delay";
ship.gotoAndPlay("explode"); //在作战飞机元件内,播放头跳向爆炸帧 if (ship.x 720) {ship.x = 0;}} if (ship.y > 520) {ship.y = 0;}} if (upArrow) {ship.y-=10; if (rightArrow) {ship.x+=10; if (downArrow) {ship.y+=10;
} removeAllShieldIcons(); //删除所有保护盾图标 delayTimer = new Timer(2000,1); //下一架飞机出现出延时2秒 delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,newShip); delayTimer.start(); //延时计时开始 removeShipIcon(); //删除一个飞机图标 shipsLeft--; //飞机数量减少一个
(5)开启3秒的保护盾
function startShield(freeShield:Boolean) {
} if (shieldsLeft
(6)关闭保护盾
function endShield(event:TimerEvent) {
ship.shield.visible = false;
} shieldOn = false;
(7)创建四组石头
function nextRockWave(event:TimerEvent) {
rocks = new Array(); newRock(100,100,"Big"); newRock(100,300,"Big");
newRock(450,100,"Big");
} newRock(450,300,"Big"); gameMode = "play";
(8)激活所有岩石
function moveRocks(timeDiff:uint) {
for(var i:int=rocks.length-1;i>=0;i--) { // 石头移动速度等于石头初始速度+增量速度*游戏关数 var rockSpeed:Number = rockSpeedStart + rockSpeedIncrease*gameLevel; rocks[i].rock.y += rocks[i].dy*timeDiff*rockSpeed; rocks[i].rock.rotation += rocks[i].dr*timeDiff*rockSpeed; // 设置石 rocks[i].rock.x += rocks[i].dx*timeDiff*rockSpeed; //石头位置 头的旋转
// 设置石头运动的范围,如果石头位置超过屏幕边界,则它又从屏幕的另一侧出现
if ((rocks[i].dx > 0) && (rocks[i].rock.x > 720)) { rocks[i].rock.x -= 720;} rocks[i].rock.x += 720;} rocks[i].rock.y -= 540;} rocks[i].rock.y += 540;}}} if ((rocks[i].dx 0) && (rocks[i].rock.y > 520)) { if ((rocks[i].dy
(9)子弹击中石头后
function rockHit(rockNum:uint) {
//当子弹击中大石头,则大石头分裂成两个小石头
if (rocks[rockNum].rockType == "Big") { newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Medium"); newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Medium");
} else if (rocks[rockNum].rockType == "Medium") { //当子弹击中中石头,则中石头分裂成两个小石头
newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Small");
} } newRock(rocks[rockNum].rock.x,rocks[rockNum].rock.y,"Small"); gameObjects.removeChild(rocks[rockNum].rock); //删除被击中的石头 rocks.splice(rockNum,1); //将该石头从石头数组中删除
(10)生成子弹
function newMissile() {
var newMissile:Missile = new Missile(); //实例化子弹
newMissile.dx = -Math.cos(Math.PI*1/2); // 子弹方向 newMissile.dy = -Math.sin(Math.PI*1/2); newMissile.x = ship.x + newMissile.dx*shipRadius; // 子弹的位置 newMissile.y = ship.y + newMissile.dy*shipRadius; gameObjects.addChild(newMissile); //将子弹添加到游戏对象中 missiles.push(newMissile); //将子弹添加到子弹数组中
}
(11)子弹的移动
function moveMissiles(timeDiff:uint) {
for(var i:int=missiles.length-1;i>=0;i--) { missiles[i].x += missiles[i].dx*missileSpeed*timeDiff; // 子弹运动 missiles[i].y += missiles[i].dy*missileSpeed*timeDiff; // 当子弹超出屏幕范围时,将子弹对象删除 if ((missiles[i].x 700) || (missiles[i].y gameObjects.removeChild(missiles[i]); delete missiles[i]; missiles.splice(i,1); 500)) { }}}
(12)当子弹击中石头后,删除子弹对象
function missileHit(missileNum:uint) {
} gameObjects.removeChild(missiles[missileNum]); missiles.splice(missileNum,1);
(13)检测子弹是否与石头碰撞
function checkCollisions() {
rockloop: for(var j:int=rocks.length-1;j>=0;j--) { missileloop: for(var i:int=missiles.length-1;i>=0;i--) { // 如果石头和子弹的之间的距离小于石头的大小,则子弹击中石头
if (Point.distance(new Point(rocks[j].rock.x,rocks[j].rock.y),new Point(missiles[i].x,missiles[i].y))
rockHit(j); //子弹击中石头时,调用碰撞函数和子弹碰撞函数
missileHit(i);
gameScore += 10; // 击中石头后,加分同时更新分数
updateScore();
continue rockloop; //继续检测碰撞
}} if (gameMode == "play") {// 检测飞机是否与石头碰撞 if (shieldOn == false) { // 保护盾处于关闭状态 if (Point.distance(new Point(rocks[j].rock.x,rocks[j].rock.y),new
Point(ship.x,ship.y))
shipHit();// 碰撞后,调用飞机碰撞函数和石头碰撞函数
} rockHit(j);}}}} if ((rocks.length == 0) && (gameMode == "play")) {//如果当前屏幕中的 } gameMode = "betweenlevels"; gameLevel++; // 进入下一关 delayTimer = new Timer(2000,1); delayTimer.start(); 石头被打完了,且游戏正在进行中 delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,nextRockWave);
(14)游戏结束,删除所有对象和监听器
function endGame() {
} removeChild(gameObjects); removeChild(scoreObjects); gameObjects = null; scoreObjects = null; removeEventListener(Event.ENTER_FRAME,moveGameObjects); stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction); stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction); gotoAndStop("gameover");
2.片头开始游戏按钮代码
stop();
startbtn.addEventListener(MouseEvent.CLICK,clickStart);
function clickStart(event:MouseEvent) {
}
helpbtn.addEventListener(MouseEvent.CLICK,clickhelp);
function clickhelp(event:MouseEvent){
MovieClip(root).gotoAndStop("help");
}
3.再玩一次按钮代码
playAgainButton.addEventListener(MouseEvent.CLICK,clickPlayAgain); function clickPlayAgain(event:MouseEvent) {
}
4.帮助界面返回按钮代码
stop();
MovieClip(root).gotoAndStop("play"); gotoAndStop("play");
backbtn.addEventListener(MouseEvent.CLICK,clickback);
function clickback(event:MouseEvent) {
} MovieClip(root).gotoAndStop("intro");
四、总结
这次毕业设计是对我们大学三年学习的一次重要的检验,也是对我们在三年的学习是否达到一定的水平,是否合格的一次考核。在这段难忘的毕业设计的时期里我感受到了专注研究一个课题的乐趣及困难,这也是我学习Flash以来第一次比较系统的开发的一个游戏,之前只是制作一些简单的flash动画。当然,在开发的过程中遇到了许多的困难,但是我坚信,只要坚持加努力,就一定能完成任务。每当解决一个困难的时候,心里就会感到很高兴,并且也在开发过程中得到了一次难能宝贵的经验。
五、参考文献
[1] 沈钧,李庆著.FlashCS3 ActionScript3.0游戏开发基础与范例.北京:电子工业出版社,2008
[2] 肖刚著.Flash游戏编程教程.北京:人民邮电出版社,2008
[3] 李如超,Flash CS3 中文版动画制作基础.北京:人民邮电出版社,2009
六、致谢
五月维夏,山有嘉卉。初春的绿城早已艳阳朝天,花满枝头,欣欣向荣。在这个美好的季节里,我在电脑上敲出了最后一个字,心中涌现的不是想象已久的欢欣,却是难以言喻的失落。是的,随着论文的终结,意味着我生命中最纯美的学生时代即将结束,尽管百般不舍,这一天终究会在熙熙攘攘的喧嚣中决绝的来临。
三年寒窗,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中所培养的思维方式、表达能力和广阔视野。很庆幸这些年来我遇到了许多恩师益友,无论在学习上、生活上还是工作上都给予了我无私的帮助和热心的照顾,让我在诸多方面都有所成长。感恩之情难以用语言量度,谨以最朴实的话语致以最崇高的敬意。
在本论文的写作过程中,感谢王XX老师倾注了大量的心血,从选题到开题报告,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。写作毕业论文是一次再系统学习的过程,毕业论文的完成,同样也意味着新的学习生活的开始。