flash游戏报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.. . . ..
目录
第1章需求分析 (1)
1.1 引言 (1)
1.2 课程设计题目 (1)
1.3 程序运行环境及开发工具 (1)
1.4 课程设计任务及要求 (1)
第2章概要设计 (1)
2.1 设计原理及方法 (1)
第3章详细设计 (2)
3.1 第一步: (2)
3.2第二步: (2)
3.3第三步 (3)
3.4 第四步 (4)
3.5 第五步 (6)
3.6 第六步 (9)
第4章调试及运行结果 (10)
第5章总结与体会 (10)
参考文献: (11)
第1章需求分析
1.1 引言
FLASH作为一款目前最流行的网络动画制作软件,恐怕不知道的人少之又少。
其实FLASH强大的功能不光能让我们轻松制作动画,我们还可以利用它完成一些意想不到的工作。
比如说是拼图游戏,飞机大战游戏,植物大战僵尸游戏等等。
在这个领域应用非常广泛!而且可以制作各种丰富有趣的小游戏来,是非常的有趣的!
1.2 课程设计题目
飞机射击游戏设计
1.3 程序运行环境及开发工具
硬件:PC机一台
软件:Windows 7,Photoshop CS6,Flash CS6
1.4课程设计任务及要求
设计“飞机射击游戏”,游戏是Flash制作中很重要的一部分,主要应用的是flash内嵌的ActionScpript编程脚本。
并在其中配合图形、元件、文字、音乐等于一体。
第2章概要设计
2.1 设计原理及方法
设计一个飞机射击游戏,主要是实现用鼠标的移动来控制游戏中画面下方的炮弹发射器的位置移动,单击鼠标左键时发射炮弹,当炮弹击中画面上方飞过的飞机且飞机爆炸则可获得相应分数,具体得分情况
右上角有显示。
第3章详细设计
3.1 第一步
打开Flash CS6新建一个ActionScpript3.0,舞台属性中大小设置为1100x600,FPS为30。
将准备好的图片素材导入库中,合理布置背景。
将相应图形制作为所需元件。
3.2第二步
新建ActionScript3.0类文件paotong
输入代码,实现鼠标移动来控制炮弹发射器的移动,并在场景中隐藏鼠标。
代码如下:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.ui.Mouse
public class Paotong extends Sprite
{
public function Paotong()
{
Mouse.hide()
stage.addEventListener(MouseEvent.MOUSE_MOVE,moves );
}
private function moves(e:MouseEvent):void
{
x=e.stageX
}
}
}
3.3第三步
新建ActionScript3.0类文件Hot
输入代码实现炮弹的发射(如果击中则炮弹即时消失,未击中则继续显示至出舞台)。
代码如下:
package {
import flash.display.Sprite;
import flash.events.*;
public class Hot extends Sprite {
private var _speed:int;
public function Hot(speed):void {
_speed=speed;
addEventListener(Event.ENTER_FRAME,enterFrames);
addEventListener("击中",chick);
}
private function enterFrames(e:Event):void {
y-=_speed;
if (y<0) {
removeEventListener(Event.ENTER_FRAME,enterFrames);
stage.dispatchEvent(new Event("init"));
this.parent.removeChild(this);
}
}
private function chick(e:Event):void {
removeEventListener(Event.ENTER_FRAME,enterFrames);
stage.dispatchEvent(new Event("init"));
removeEventListener("击中",chick);
this.parent.removeChild(this);
}
}
}
3.4 第四步
新建ActionScript3.0类文件shot
输入代码实现飞机的随机出现以及飞机大小,飞行的速度。
代码如下:
package {
import flash.display.MovieClip;
import flash.events.*;
public class Shot extends MovieClip {
private var _speed:Number;
public function Shot() {
init();
this.addFrameScript(9,ten_script);
}
private function init():void {
gotoAndStop(1);
_speed=Math.random()*15;
x=- Math.random()*100;
scaleX=Math.random()+0.4;
scaleY=scaleX;
addEventListener(Event.ENTER_FRAME,enterframe);
addEventListener("击中",chick);
}
private function enterframe(e:Event):void {
x+=_speed;
if (x>700) {
init();
}
}
private function chick(e:Event):void {
gotoAndPlay(2);
removeEventListener("击中",chick);
var myEvent:ScoreEvent=new ScoreEvent("score");
myEvent.score=Math.round((40-scaleX*35)+_speed*0.4);
stage.dispatchEvent(myEvent);
removeEventListener(Event.ENTER_FRAME,enterframe);
}
private function ten_script():void {
init();
}
}
}
3.5 第五步
在舞台中合适位置插入两个文本框以统计并显示游戏得分情况,文本属性均为传统动态文本,其中一个文本中输入“得分”两字并调整颜色及大小,实例名称为空,另一文本不输入任何字,但要设置颜色和
大小,实例名称为score_txt。
新建ActionScript3.0类文件Hotdocuments
输入代码实现击中飞机后的得分显示以及分数的计算方式,代码如下:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.*;
import flash.media.Sound;
import flash.media.SoundChannel;
public class Hotdocuments extends Sprite {
private var _speed:int=40
private var score:int
private var positionX:Number;
private var positionY:Number;
public function Hotdocuments() {
score_txt.text=String(score)
stage.addEventListener("score",score_fun)
stage.addEventListener(MouseEvent.MOUSE_DOWN,down _fun);
}
}
private function score_fun(e:ScoreEvent):void
{
score+=e.score
score_txt.text=String(score)
}
private function down_fun(e:MouseEvent):void {
stage.addEventListener("init",init);
stage.addEventListener(MouseEvent.MOUSE_UP,up_fun);
stage.addEventListener(Event.ENTER_FRAME,enter_frame);
stage.removeEventListener(MouseEvent.MOUSE_DOWN,d own_fun);
}
private function init(e:Event):void {
stage.addEventListener(MouseEvent.MOUSE_DOWN,down _fun);
}
private function up_fun(e:MouseEvent):void {
positionX=e.stageX;
positionY=e.stageY;
newHot();
stage.removeEventListener(Event.ENTER_FRAME,enter_fra me);
stage.removeEventListener(MouseEvent.MOUSE_UP,up_fun );
}
private function enter_frame(e:Event):void {
if (_speed<40) {
_speed++;
} else {
_speed=30
}
}
private function newHot() {
var hot:Sprite=new Hot(_speed);
hot.x=positionX;
hot.y=paoTong_mc.y;
addChild(hot);
_speed=30
hot.addEventListener(Event.ENTER_FRAME,hitTests);
}
private function hitTests(e:Event):void {
var a_mc:Sprite=e.target as Sprite;
var b_array:Array=new Array();
b_array[0]=shot_mc;
b_array[1]=shot1_mc;
b_array[2]=shot2_mc;
for (var i:uint; i<b_array.length; i++) {
if (a_mc.hitTestObject(b_array[i])) {
trace("yes");
a_mc.removeEventListener(Event.ENTER_FRAME,hitTests);
a_mc.dispatchEvent(new Event("击中"));
b_array[i].dispatchEvent(new Event("击中"));
}
}
}
}
}
3.6 第六步
回到库中,将元件与类文件链接起来。
如图所示:
第4章调试与运行结果
Ctrl + Enter 测试影片。
如图所示:
至此,飞机设计游戏已基本完成。
保存文件并导出即可。
第5章总结与体会
通过两星期的课程设计,虽然在参考资料的情况下完成了这个Flash小游戏的制作,但是也发现了自己对知识掌握的不足之处,尤其是类文件代码编写中语法方面。
以前仅限于传统补间动画的制作,现在还要涉及ActionScript 3.0的应用,刚开始发现好多语法错误,
通过同学的帮助和上网查询有关知识解决问题。
自己也觉得这个小游戏实现功能不够多,差了好多资料,其他射击游戏的功能有很多,而自己的却是很简单,以自己的能力只能完成这些,在今后的学习中继续加以努力学习。
参考文献:
[1]. 《ActionScript3.0编程基础与范例教程》
何红玉、夏文栋主编 /清华大学出版社
[2]. 《点睛 ActionScript3.0游戏互动编程》
游志德著 /2015-09-01 /人民邮电出版社
[3]. 《ActionScript 3.0编程特效实战案例解析》
贺晓霞等著/清华大学出版社
[4]. 《最新Actionscript3.0典型范例速查手册》
吕洋波编著/中国铁道出版社。