Flash小游戏项目任务书

时间:2024.4.21

Flash小游戏项目

任务书

北方工业大学信息工程学院计算机科学与技术系

20##年 04月 10日


一. 课程目的

1.通过理论课学习和上机操作,使同学们掌握Flash软件的基础知识。

2. 掌握Flash的启动与退出、Flash文档的新建和保存、Flash的工具认识和Flash的舞台设置等知识。

3. 能够利用Flash绘制图形、填充图形和编辑图形。

4. 了解在Flash中的素材、元件及“库”面板的使用,包括导入各种类型的素材、创建3种不同的元件、转换元件类型和“库”面板的使用等知识.

5. 掌握Flash动画的制作,包括帧的使用、图层的创建、简单动画(逐帧动画、补间动画)的制作、特殊动画(引导动画、遮罩动画)的制作等内容.

6. 能够为动画添加声音,包括为帧和按钮添加声音、输出声音和设置声音等内容.

7. 掌握为动画添加Actions语句,包括添加Actions语句的方法、Actions语句的语法规则及内涵、控制动画播放Actions语句和对Flash组件的使用等内容。

二. 课程内容

1.      学习和掌握绘图与编辑工具 使用;

2.      学习和掌握文本、辅助工具和色彩使用;

3.      学习和掌握资源和资源管理;

4.      基本动画制作

5.      图层动画制作

6.      编辑应用音频资源

7.      系统配置与动画测试

8.      动作脚本应用基础

9.      交互式动画

10.   组件与行为

11.   作品的导出与发布

三. 课程设计报告内容要求

1.系统目的

2.系统总体设计及使用技术

3.系统主要功能

4.系统主要界面及介绍

5.系统难点

6.课程设计的总结

四.  课程具体要求

使用Flash结合AS制作出2款小游戏,并上传到指定Web服务器上测试。

注:AS是指Action Script

1  运行环境

操作系统:   Windows

Web服务器: IIS

开发工具:   Flash CS3

2  功能描述

整个游戏的场景不得少于2个。

2.1 基本功能描述

元件绘制:游戏使用的所有道具都需要自己绘制。

代码编写:代码可以使用老师提供的范例、但是必须结合自己的游戏进行优化。

扩展功能描述

多玩家在同一台机器时间2个玩家对战游戏。

人机对站:实现玩家和电脑的对战。

网络对站:玩家通过网络实现对战操作。

工程进度表:

3  编程要求

在项目开发过程中必须严格遵守下列要求:(示例见附录)

1)        所有元件必须使用添加到元件库的方式;

2)        所有元件必须放置在独立的层内;

3)        元件不能使用示例中的;

4)        CS代码必须进行完成,修改成满足自己具体的应用;

五. 附例

使用Flash 8制作拼图小游戏

说明:此例主要Flash 8的复制到网格和hitTest()函数等命令的使用,对两者的结合制作出拼图小游戏的过程进行了详细的说明。

          图1   完成效果图                     

拼图游戏是一种古老的游戏,相信大家都玩过拼图游戏,今天我就将拼图游戏的一种制作方法教给大家。完成效果如图1。

游戏规则:当在某个小图片上按下鼠标左键不松开鼠标进行拖动时,该小图片跟随鼠标移动,当松开鼠标时,如果是小图片的最后正确位置,该小图片就停留在正确位置,否则回到原来的位置。

制作步骤:

1.  使用Photoshop进行图片处理

1)  打开Adobe Photoshop CS;

2)  使用“文件”菜单的“打开…”命令打开准备好的图片“未标题-1.jpg”,如图2。

3)  使用“视图”菜单的“显示”的“网格”命令,显示出网格。

4)  使用切片工具将图像等分为36份。(每份3×3小格)

5)  使用“文件”菜单的“存储为Web所用格式…”命令,单击“存储”按钮后,选择保存位置(本例选择“桌面”)和名称(本例为“未标题-1.html”)后,保存即可。

6)  关闭Adobe Photoshop CS。

2.  使用Flash 8制作拼图游戏

1)        打开Flash 8,新建一个“Flash 文档”。

2)        设置文档大小为640×480像素。

3)        使用“文件”菜单的“导入”下的“导入到库”命令,将桌面上的“images”文件夹中所有图片导入到库中。

4)        从库中将“未标题-1.gif”拖入舞台中,按F8键将它转换为元件,名称为tu1,类型为影片剪辑,确定。

5)        重复上一步操作,把“未标题-2.gif”转换为tu2,“未标题-3.gif”转换为tu3,……,“未标题-36.gif”转换为tu36。

6)        将舞台中的36个影片剪辑打乱次序后进行排列。

6)方法:先将每行的左面一个和右边一个放好位置,再选中这一行的几个,使用对齐面板中的“垂直中齐”和“水平平均间隔”进行排列。之后再对每列的几个影片剪辑,使用对齐面板中的“水平中齐”和“垂直平均间隔”进行排列,如图3。

                         图3

7)        将图层1命名为“图形”,并锁定。

8)        在库面板中,右击tu1,选择“直接复制”,在弹出的“直接复制元件”对话框中,名称为bt,类型为按钮,确定。这时就有一个按钮元件bt。

9)        双击bt按钮图标,进行按钮的编辑:将弹起帧的内容全选后,使用“修改”菜单的“分离”命令(或按Ctrl+B)把图像打散,使用墨水瓶工具给它添加黑色边框。在点击帧插入关键帧。在弹起帧将填充删除,只留边框。

10)    返回场景1。新建一图层,将该图层拖到“图形”层的下面。

11)    将按钮bt拖入舞台中,选择该按钮,执行“插入”菜单的“时间轴特效”的“帮助”下的“复制到网格”命令,在网格尺寸的行数和列数中填入6,在网格间距的行数和列数中都填入0像素数。单击确定按钮。

12)    出现一个“复制到网格”的影片剪辑,将其分离(Ctrl +B),在属性面板,将分离后的元件的实例类型(默认的是图形)都转换为“按钮”。并按先行后列的顺序起名bt1,……,bt36。位置如下图。将该层命名为“按钮”并锁定。

13)    新建一图层,命名为“参考图”,将该图层拖到“按钮” 层的下面。

14)    将“未标题-1.jpg”文件导入库, 将之拖入“参考图”层,转换为元件,位置和按钮层的按钮相同,在属性面板,设置其颜色:Alpha,15%。

15)    使用文本工具,在图片的上方空白处输入文字“拼图游戏”:隶书、60、粗体、颜色#996600;在滤镜面板,添加“投影”效果,阴影颜色#999966。锁定该层。

16)    将“图形”层解锁,选中影片剪辑tu1,打开动作面板,输入代码:

onClipEvent (mouseDown) {       //当按下鼠标左键时

  if(this.hitTest(_root._xmouse,_root._ymouse,false)) 

                                //判断鼠标指针在该对象上

    { this.startDrag(true); //进行鼠标跟踪

       x=this._x;           //用x存储原来的水平坐标

       y=this._y;  }            //用y存储原来的垂直坐标

onClipEvent (mouseUp) {         //当按下鼠标左键时  

  if (this.hitTest (_root.bt1)) //判断该对象和按钮bt1有重叠,停留在正确位置

  { this._x=_root.bt1._x;   //使该对象的水平坐标和按钮bt1的水平坐标相同

    this._y=_root.bt1._y; } //使该对象的垂直坐标和按钮bt1的垂直坐标相同

 else                      //否则返回原来位置

     {   this._x=x;          

            this._y=y;  }

 stopDrag();

}               //_root.bt1可用this._parent.bt1代替。

17)    将以上代码全选后复制,返回场景,再选择tu2,打开 动作面板,进行粘贴,只用将bt1全部改为bt2即可。

方法:可在动作面板中单击查找和替换按钮,在弹出的“查找和 替换”对话框中,查找内容:1,替换为:2,单击“全部替换”按钮。

18)    类似进行上步操作,为其它的影片剪辑都添加动作代码。

19)    使用“控制”菜单的“测试影片”(或按Ctrl+Enter),观看效果。

20)    使用“文件”菜单的“导出”的“导出影片”(或按Ctrl+Shift+Alt+s),输入文件名“拼图游戏”,保存。

21)    可使用“文件”菜单的“发布设置..”命令进行发布设置后发布。也可使用“文件”菜单的“发布”命令(Shift+F12)直接发布。



第二篇:Flash小游戏开发


LESSON 6 范例接宝游MC戏详细分析

搞了半天的鸟CLASS,我们又回到了做游戏的内容上来。

咱们学那么多知识,目的也只为了更好的来做游戏。这个游戏吧,前面也有朋友说到了,根本不用CLASS,做个单个FLA文件F9按了猛打代码,然后MC里点开了东鸟点代码,西鸟点代码,也能完成。

没错,确实这样。

我自己相当长一段时间内也是不懂CLASS之流,只用一个FLA文件,代码全死敲里面,也做出不少洋洋得意自以为是的小游戏。

我自己本身就不是科班出身的鸟,当年差了十分没能进计算机系,错过了接受正规编程教育的大好光阴。(不过事后发现世界是奇妙的,我做过几个单位从事正职编程的都不是计算机系毕业的)

但当小游戏逐渐变成大游戏后,一个FLA里,root里,MC里代码开始多起来,关系开始复杂起来,于是制作者头也开始大起来,直接影响到睡觉睡不好,饭也吃不好,肠胃不通,消化不良,上班没精神……

于是,就必须要正规的,能让脑子清醒的,能轻松分辨游戏里各类关系的开发方法。

再于是,我每天买瓶水,学习了CLASS方面的知识。(日,学CLASS和买水有啥关系??)

话题扯远了,让我们再次回到接宝上来。

一楼那个我做的简单范例SWF大家看过了没?

什么?没?

赶快去下了,试着玩玩。给你5分钟,玩好再继续往下看。

……(5分钟的等待)

好,试玩过了对吧?

我现在问你,要你分析游戏里的逻辑关系,你怎么分析?

给你5分钟思考。

……(5分钟的等待)

是不是:天上不间断掉宝-当地下人物碰到宝,就获得相应的奖励。时间到就结束游戏。 是这样的。

但我思考问题,是按:

1.游戏时画面上有几大元素?(MC)

2.每个MC要实现什么功能?

从每个MC的角度来思考分析游戏的构成。

你也要习惯这样,因为我们以后要从MC的角度来编写CLASS,每类MC都会有个对应的CLASS类来告诉这个MC在游戏中该做什么。

各个MC拼合起来,就成了一个游戏。

简单游戏和复杂游戏的一个区别,就是游戏里元素多少,元素多了,逻辑复杂,元素少了,逻辑简单。

好,请鸟鸟们继续思考,接宝游戏里有几大元素(MC)?它们各自要做点什么? 给你10分钟……

……(10分钟的等待)

见图:

公布答案:

1.人物

2.宝物

3.分数(右上角)

4.时间(左上角)

5.游戏总控制(包括选人、最后最高分显示)

每类各自要做的事情:

【人物】

1.能够左右按键移动控制移动

2.移动范围限定(不能跑出屏幕吧?)

3.按上键技能

4.一些初始化设定(刚开始出现的坐标,移动速度)

【宝物】

1.按随机速度下落,落出屏幕消失

2.碰撞检测,是否碰到人物

3.碰到人物后产生加分、加时间等不同的效果

4.初始化设定(刚开始出现的坐标,移动速度)

【分数】

1.显示分数

【时间】

1.30秒倒计时,显示时间变化

2.到了0秒,通知‘游戏控制’执行‘结束游戏’的function

【游戏控制】

很重要的部分,要控制协调以上几个元素之间的关系,以及游戏的过程。

集合了很多种function供调用

以下规整下包含的function

1.人物选择:按照人物选择框的选择,attach人物MC到舞台(人物attach进来后,就会自动按照他自己的CLASS行动啦),同时调用‘掉宝控制’的function开始掉宝以及‘时间控制’里倒计时方法,开始30秒倒计时。

2.掉宝控制:按照随机时间间隔,随机的attach宝物种类到舞台(一样~!宝物attach进来后,就会自动按照他自己的CLASS行动)

3.金币消失:这个funtion要在时间到0时被调用,作用是让屏幕上的金币原地消失

4.游戏结束:这个function是被‘时间控制’里当时间=0的时候调用的,作用为判断比较当前得分和最高分,显示框出现显示最高分。

说了那么多,不知道大家思路跟不跟的上

按我说的仔细思考下吧

要直到能理解我说的,才能继续看下一小节。

下一小节开始,我要一个个放出各个CLASS的具体代码了,并进行详解,请时刻关注哦!

【附】

编写好的CLASS怎么关联到MC?

就拿上节例子Time_control.as来说吧,要关联到库里的元件'时间'

老鼠右击元件'时间',然后……

见图

如果是自己拖到舞台上,“第一帧导出”就不选

如果是attach上舞台,则就要选哦~!

LESSON 7 范例接宝游戏中人物类的CLASS讲解

一般兄弟叫我小周

我的游戏玩家称呼我周哥

同事称呼我周大师

象我讨教问题的喜欢称呼我周老师

虽然我身为一名正职的FLASH设计师,大家也是可以可以称呼我为周老师的。因为一年前我作为未婚妻大人的御用陪读,不经意间居然也通过BT的几门考试得到了《上海市教师资格

证》??(虽然我不知道我要这张证有什么用)??

那个??话题又乱扯了(不过也证明了我思维活跃嘛~如果你的思维有我一半的扯,日后你

可以去考个证当老师了,纵使比现在的计算机老师水平高些,但也足以误人子弟)

回到本节主题上来,我们来学习范例游戏的具体代码。

首先请下载源文件:

/temp/CLASS范例.rar

(斑竹看到帮忙传下,1.8M的附件我没权限传到坛子上)

下载好,打开一看,如下

一个FLA主文件: run_game.fla

三个目录:player,items,game

我把.as类文件分门别类的存放,这样看上去清晰,更重要的是别人看了会觉得我很专业~

目录player里有:Player_1.as Player_2.as

目录items里有:Jin.as Bao1.as Bao2.as

目录game里有:Game_control.as Score_view.as Time_control.as

.as具体意义看文件名就应该能知道,这里要说的是,一般默认的规则,放CLASS目录用小

写字母命名,.as的类文件名的首字母用大写

这节详细讲下人物类的CLASS,首先是Player_1.as,人物小李的类

首先去源文件里点进人物1的MC,看下结构。

由两帧组成,一是“stand”,二是“run”

人物上面有一层有个圆形的MC,我把它命名为hit,靠这个mc来做碰撞检测。

金币里面也有这个名叫hit的MC,我判断人物和金币是不是相碰是用这个语句的: 金币

MC.hit.hitTest(人物MC.hit)

传统碰撞检测都这么做。

又开始扯话题了,马上拉回来~! 现在拿出Player_1.as的代码

复制内容到剪贴板

Flash小游戏开发

class player.Player_1 extends MovieClip {

private var hit:MovieClip; //人物MC里出现的东西都要声明,hit这个MC

也不例外

public var speed:Number;//这个是人物移动的速度

//构造函数

function Player_1() {

init();//初始化的人物打包在init()里了

}

//隐式设置-获取法

public function set _speed(sss:Number):Void {

speed = sss;

}//可供外界用MC._speed=X修改speed的数值

public function get _speed():Number {

return (speed);

}//可供外界读取speed的数值

//私-公有方法

//---初始化方法---

private function init() {

_y = 310;

_x = 300;//人物来到舞台后的初始位置

speed = 6;//移动速度

onEnterFrame = Move;//人物来到舞台后就开始onEnterFrame,内容见

Move这个function

}

//---人物移动---

private function Move() {

if (Key.isDown(37)) {

_xscale = -100;

_x -= speed;

this.gotoAndStop("run");

} else if (Key.isDown(39)) {

_xscale = 100;

_x += speed;

this.gotoAndStop("run");

} else {

this.gotoAndStop("stand");

}

//以上是左右键的定义,应该看得懂吧?

if (Key.isDown(38)) {

speed = 12;

} else {

speed = 6;

}

//以上是上键的定义,按着后速度就加倍咯

range();//范围定义,内容见下面

}

//---限定移动范围---

private function range() {

if (_x>540) {

_x = 540;

}

if (_x<10) {

_x = 10;

}//不让人物出界

}

}

这个CLASS文件就是这样。按照前几节我说的结构,鸟鸟们对照这看下。能不能看懂。 这里要说的是,第一行的player.Player_1,其中前面的player表示路径“.”就相当于"\"

player.Player_1就相当于player\Player_1

关联到MC的时候也要这么写的。

小李的CLASS写完了

然后写鸣人的CLASS

记得前几节我说的“继承”这个概念么?

快去翻出来看看。

鸣人和小李就是上键技能不同,所以继承过来后,正文把按键控制重写一次就行了,其它就

全继承小李的类了

代码如下

复制内容到剪贴板

Flash小游戏开发

class player.Player_2 extends player.Player_1 {

//继承了player.Player_1类,所以只需要把两者间唯一不同的Move函数重写次

就可以啦~当然构造函数还是要的

function Player_2() {

init();

}

//人物2的Move函数

private function Move() {

if (Key.isDown(37)) {

_xscale = -100;

_x -= speed;

if (_currentframe != 3) {

gotoAndStop("run");

}//这句自己体会下,不加的话,按上键后鸣人就一直不停的在跳跃了

} else if (Key.isDown(39)) {

_xscale = 100;

_x += speed;

if (_currentframe != 3) {

gotoAndStop("run");

}

} else {

if (_currentframe != 3) {

gotoAndStop("stand");

}

}

//

if (Key.isDown(38)) {

gotoAndStop("jump");

}

range();

}

}

好了,人物类就写完了。

消化下。后面的宝物类大同小异,下一节再写。

LESSON 8 范例接宝游戏中宝物类的CLASS讲解

先补充个游戏里的结构:

_root下有三个空MC: pl,item和xs

pl这个空MC是用来attach人物的

item这个空MC是用来attach宝物的

xs这个MC是用来attach显示得分的

为什么要这么做呢???因为管理方便呀~以后你会慢慢体会到的。

严重警告:第7课未搞懂看明白者,请回上节反复研究,直至搞懂。不然继续往下看会让你体内真气逆行,任、督二脉自锁,全身犹如蚂蚁咬,饭吃不下,觉睡不着,放P恶臭,对

FLASH丧失学习信心??

(??)

好了,能看到这行的,说明你已经是个消化第7节内容的鸟了。

这一节我也话不多说,直接放代码了。用你第7节学到的内容自我检验下。

金币10和50共用的CLASS

复制内容到剪贴板

Flash小游戏开发

class items.Jin extends MovieClip {

static var basic_speed:Number = 3; //下落基础速度

public var score:Number = 10; //得分

public var speed:Number; //下落速度

private var hit:MovieClip; //声明碰撞检测的MC

private var depth:Number; //当宝物被人物获得,显示得分的MC的深

//---构造函数---

function Jin() {

init();

}

//隐式设置-获取方法

public function set _score(kkk:Number):Void {

score = kkk;

}//得分10还是50,传入这个参数就能解决

public function _bspeed(){

basic_speed= 3;

trace(basic_speed)

}//这个要说明下,静态变量basic_speed每实例化一个MC都会自我增加,所以基础速度越来越快。这个方法是让basic_speed变回原始的3。用于每回合开始时初始化使

用。

public function set _speed(sss:Number):Void {

speed = sss;

}

//共有-私有方法

private function init() {

_x = 50+random(450);

_y = -15;

speed = basic_speed+random(50)/10;//下落速度是由基础速度+随机增

basic_speed+=0.03

//trace(basic_speed)

onEnterFrame = Move;

}

private function Move() {

_y += speed;

if (_y>380) {

this.removeMovieClip();

}

/////////////////////////////////

if (hit.hitTest(_root.pl.player.hit)) {

getItem();

}

///////////////////////////////// 碰撞检测哦~

}

public function getItem() {

_root.music_control.snd("jin");//声音控制,以后会讲到

_root.score += score;

depth = _root.xs.getNextHighestDepth();

var a:MovieClip = _root.xs.attachMovie("getScore",

"getScore"+depth, depth++);//ATTACH显示得分的MC

a.aaa.score = "+"+score;

a._x = _x;

a._y = _y;

this.removeMovieClip();

}

}

然后是两个宝物的CLASS,继承了金币的类,只不过改写了被人物吃到后的效果

爱心

复制内容到剪贴板

Flash小游戏开发

class items.Bao1 extends items.Jin {

public function getItem() {

_root.music_control.snd("bao"); depth = _root.xs.getNextHighestDepth();

var a:MovieClip = _root.xs.attachMovie("getScore",

"getScore"+depth, depth++);

a.aaa.score = "TIME";

a._x = _x;

a._y = _y;

////////

_root.time_c._time += 8;

///////

Flash小游戏开发

调时间控制类的public方法,后面会讲到

this.removeMovieClip();

}

}

五角星

复制内容到剪贴板

class items.Bao2 extends items.Jin {

public var score:Number = 30;

public function getItem() {

//_root.score+=score

_root.music_control.snd("bao");

///////

for (var i in _root.item) {

if (_root.item[i]._name.substr(0, 3) != "bao") {

_root.item[i].getItem();

}

}

_root.score += score;

depth = _root.xs.getNextHighestDepth();

var a:MovieClip = _root.xs.attachMovie("getScore",

"getScore"+depth, depth++);

a.aaa.score = "+"+score;

a._x = _x;

a._y = _y;

///////

this.removeMovieClip();

}

}

宝物这类,和人物类有点相似的。

下节会把时间控制类和分数控制类一起讲掉。大家快把这节的内容消化了吧~

LESSON 9 范例接宝游戏中得分显示类和时间控制类的CLASS讲解

事实上这两部分比较简单

所以并在一起讲解了

讲解前先点开FLA文件,把这两个MC看看,对MC构造了解了,才能写CLASS嘛~

看下得分显示类的代码

复制内容到剪贴板

Flash小游戏开发

class game.Score_view extends MovieClip {

private var w1:MovieClip;

private var w2:MovieClip;

private var w3:MovieClip;

private var w4:MovieClip;

private var w5:MovieClip;

private var w6:MovieClip;

private var i:Number

//构造函数

function Score_view() {

init();

}

//公-私有方法

public function init() {

onEnterFrame = Control;

}

private function Control() {

for (i=1; i<=6; i++) {

if (i<=int(String(_root.score).length)) {

this["w"+i].gotoAndStop(int(String(_root.score).s

ubstr(i*(-1), 1))+1);

} else {

this["w"+i].gotoAndStop(1);

}

}

}

}

原理很简单,就是让这个MC一直onEnterFrame着,按照总得分来不断操控MC里的6个数

字MC变化

仔细思考下Control()里的代码,想通了其实很简单哦~~

不多说了,懂了后就跟我看时间控制类的(不懂就继续看,直到看懂为止)

Flash小游戏开发

下面是时间控制类

复制内容到剪贴板

class game.Time_control extends MovieClip{

private var t:Number

public var time:Number

//------------------------------------------

/*

function Time_control(){

init()

}

*/这段被注销掉了,因为我不要它一出现在舞台就开始倒计时。什么时候倒计时,游

戏控制类会给本类发出命令(调用本类中的Go()的function)

//-------------------------------------------

public function set _time(ttt:Number):Void{

time=ttt

}

public function get _time():Number{

return(time)

}

//===========================================

private function TimeGo(){

t++

if(t%30==0) time--

if(time==0) {

delete onEnterFrame

_root.game_c.endGame()

}

}//倒计时代码,当时间=0,通知游戏控制类作出endGame()的行为。

public function Go(){

t=1

time=30

onEnterFrame=TimeGo

}//初始化,并开始倒计时

}

有了前两节的基础,这节显的很简单??(感觉好像应该先教这节啊??- -??是不是难度顺序颠倒了??)

下节会讲最后的,也是很重要的类-游戏控制类,尽请期待~!

LESSON 10 范例接宝游戏中游戏控制类的CLASS讲解

终于讲到这节了,累死,也饿死,为了明年年初要拍婚纱,我每天中午就吃个苹果减肥,然

后靠苹果的能量再给鸟鸟们写教程??

今天算是暴走式的更新速度了,从第7节写到了第10节,胃软导致了手软,手软导致了脚

软,较软导致了XX也软??

版主看到,体恤下吧,加点分,我好早日升中级会员??(咳咳)

本节讲的是最后一个类:游戏控制类

我自己每个游戏都会在舞台上有这个MC帮我看场子,指挥调度手下的兄弟,提供各类凶器,

把握整个进程??

这个游戏的游戏控制类:Game_control.as

先点开FLA里的MC,看看它的构造。

有两个框,一个是选择人物的,一个是显示最高得分的。

我用它们两的visible属性控制它们可见和不可见。

Game_control.as把握着整个游戏的进程,提供了一些方法。

先看它怎么控制游戏的:

1.先初始化游戏参数,然后让选人框可见,让玩家选人。

2.玩家选好人,它就把人物attach到舞台上,同时通知‘时间控制类’这个小弟你可以30

秒倒计时了,又同时开始在天上撒金币和宝物。

3.‘时间控制类’小弟一看时间到0了,马上又来通知大哥,时间到0了

4.大哥收到风声后,停止撒金币,让画面上已有的金币宝物全部消失,同时一番比较后显示

出你的历史最高分,同时提供你个重新游戏的按钮

5.按重新游戏,大哥就回到第1步??

(好像所有小弟里,只有分数显示自管自工作,没有被大哥叫到)

它包含了一些方法,供小弟和自己用:

1.初始化数据:init()

2.根据玩家选择,在舞台上attach人物:chose(n:Number)

3.天上播撒金币和宝物:onGame()

4.屏幕上宝物消失:jin_disappear()

5.结束游戏,比较得分和最高分,让显示框显示最高分:endGame()

对照着我们来看下代码

复制内容到剪贴板

Flash小游戏开发

class game.Game_control extends MovieClip {

private var t:Number = 1;

private var game_begin:MovieClip

private var game_end:MovieClip

private var depth:Number

private var topScore:Number=0

public var time:Number;

//构造函数

function Game_control() {

init();

}

//隐式设置方法

public function set _time(ttt:Number):Void {

}

//公-私有方法

public function init() {

time=35

_root.score = 0;

_root.createEmptyMovieClip("pl", 3);

_root.createEmptyMovieClip("item", 2);

_root.createEmptyMovieClip("xs", 1);

//初始化里建立空MC,同时也就是把以前的MC删除覆盖

game_begin._visible=true

game_end._visible=false

_root.music_control.bg(1)

}

public function chose(n:Number) {

game_begin._visible=false

_root.pl.attachMovie("ren"+n, "player", 1);

_root.time_c.Go()//时间控制小弟~号开始倒计时啦~

_root.music_control.bg(2)

onEnterFrame = onGame;

}

private function onGame() {

t++;

if (t%time == 0) {

depth=_root.item.getNextHighestDepth()

if (random(8) == 0) {

var

a:MovieClip=_root.item.attachMovie("bao"+(1+random(2)),

"bao"+depth, depth++);

}

else if (random(5) == 0) {

var a:MovieClip=_root.item.attachMovie("jin2",

"jin"+depth, depth++);

a.score=50

} else {

_root.item.attachMovie("jin1", "jin"+depth,

depth++);

}

time = 20+random(30);

}//这段自己仔细看下,就明白怎么随机时间间隔里播撒出随即类型的宝物了

}

private function jin_disappear() {

for(var i:String in _root.item){

_root.item[i]._speed=0

_root.item[i]._bspeed()//这个方法Jin.as里写过的,还记得吗?

哈哈

_root.item[i]._alpha-=5

_root.item[i]._xscale+=2

_root.item[i]._yscale+=2

if(_root.item[i]._alpha<0) {

_root.item[i].removeMovieClip()

delete onEnterFrame

}

}//大小和alpha同时变化直到宝物消失~

}

public function endGame(){

onEnterFrame=jin_disappear

game_end._visible=true

if(_root.score>topScore) {

topScore=_root.score

game_end.sc=topScore

}//判断和记录历时最高分,同时显示最高分框显示~

}

}

事实上在人物选择框,两个人物是按钮,用来调用‘游戏控制’类里的chose(n:Number)方法。

当chose(n:Number)被调用时,后面一连串的进程就都自动展开了??

今天一下子讲的太多了,能消化掉吗?

游戏主体也就这样了。剩下点小东西,比如声音控制,下节课讲。

LESSON 11 声音控制&我对FLASH创作游戏的看法

【响应正版号召,再次宣传】

本文作者:周云(老鸟可以直接叫小弟我小周,粉丝必须称呼周哥,讨教的嫩鸟就叫声周老

师吧,满足下我的欲望,啊哈哈哈~)

联系方式:danyun1982@163.com

首发于蓝色经典论坛

欢迎转载呀~(不欢迎又咋样??要转照样转??)

转载必须保留我的作者名称和联系方法,不然转载者生个儿子+String(a)

c=["gu","yan"]

b=["长不高","没P"+c[random(c.length)],"是女孩"]

a=b[random(b.length)]+"呀~!"

我喝了半瓶子水~幻想自己刚吃了个鸡腿~死撑着把这最后节不缩水的写完~

让我们来看看声音控制部分吧~

声音控制,我个人不习惯用类来控制。

我一直是在游戏第一帧先用Sound类把库里的声音关联起来

然后做个Object,在里面定义function来控制声音的

当然你也可以写个类来控制,这随你的,用痰盂还是马桶,我们谁也不能强求谁,对吧?

把第一帧的声音控制代码拿出来~~~

复制内容到剪贴板

Flash小游戏开发

/////////---声音控制---/////////////

music_bg1 = new Sound();

music_bg1.attachSound("bg1");

music_bg2 = new Sound();

music_bg2.attachSound("bg2");

music_bg_jin = new Sound();

music_bg_jin.attachSound("bg_jin");

music_bg_bao = new Sound();

music_bg_bao.attachSound("bg_bao");

//库里的声音文件都关联起来~

music_control = new Object();

music_control.bg = function(n) {

for (i=1; i<=2; i++) {

_root["music_bg"+i].stop();

}

_root["music_bg"+n].start(0, 999);

};

music_control.snd = function(n) {

_root["music_bg_"+n].start(0, 1);

};

//music_control这个Ob里定义了bg()和snd两个方法,bg用来放长段背景音乐,

snd用来放音效

_root.music_control.bg(1)

//看,就是这么用的

现在前面几节那些CLASS里写到的声音调用语句知道是怎么回事了吧?

----------------------饥肠辘辘的分割线------------------------

游戏开发基础的课程,至此已经全部写完了。

范例游戏有很多地方可以扩充,比如加点掉宝种类,再加几个人物和技能,玩到一半掉下只猪??等等等等

我只是抛砖引玉下而已~

要玩我做的游戏?等我找找??随便先找个

/games_786.html

如果喜欢,我可以再开贴教这类STG射击型的,或者动作闯关型的,或者FMS联机型的,或者XX型的,或者YY型的都可以??

关于做游戏,事实上正规的团队应该有三种人:

1.策划

2.美工

3.程序员

但实际上,FLASH这种东西,相比其它,真的属于不赚钱的。所以搞的专业人士不多。 大多数情况下,都是闪客单干。

所以很多时候开发都不正规,比如代码不注释~在一个FLA里,帧里,隐蔽的很多MC的小边小角里,敲了很多代码,如果有人接手,必然会分析到晕倒??

这种不正规,在长时间单干下,是不会被意识到并且改正的。但如果参加过团队制作,就会立即意识到这个问题。

一个好程序员,或者懂的很多的牛人,并不会必定是个好的游戏开发者

我自己见过好几个自己认为技术很牛的人,他们并不做游戏,或者游戏做出来并不受欢迎 他们自己分析原因是没好美工,导致画面粗糙,不吸引人

而我则认为更主要的原因是缺少好的游戏策划

在我心里,游戏受欢迎程度取决的因素:策划>程序>美工

就比如细节方面,好的策划知道怎么样的设定更体贴玩家,知道什么元素能抓牢玩家,什么能激起玩家欲望,什么能让玩家HIGH

老实说,这比懂CLASS重要得多了

如果你跟我一样是一名独立创作FLASH游戏的制作者,那你先要成为一名很好的游戏玩家。 要能从玩家的角度来设计制作游戏。

当然,策划游戏,是需要天赋的。

我们不能要求每个人样样都完美,毕竟每个人都有自己擅长的和不擅长的。

继续努力吧。

最后一句,如果以后来上海想请我吃饭我一定会带上老婆给你DOUBLE面子的??

更多相关推荐:
机电一体化技术实训项目任务书

《机电一体化技术实训项目》任务书机电一体化技术实训项目是以单片机技术为主要支撑的集知识与技能为一体的基于自动控制的项目设计与制作。提高学生的综合应用与设计、制作电气自动控制系统的能力,提升学生对所学知识与技能进…

项目任务书

模拟电子技术项目任务书项目1:简易直流电源设计项目负责人:项目基本要求:设计一个简易直流电源,基本参数如下:输入电压~220V,输出电压为12V,最大负载7W,LED指示灯的工作压降1.5V,LED工作电流范围…

产品开发项目任务书

产品开发项目任务书部门文件号版本日期共页第页编写审核批准产品开发项目任务书部门文件号版本日期共页第页编写审核批准产品开发项目任务书部门文件号版本日期共页第页编写审核批准

项目设计任务书范本

项目设计任务书NO

地产项目设计任务书范本

工程名工程地委托签订日XXXXXXXXXXXXXXXXXX设计任务书称点方期第1页共11页一项目概况1城市概况分明夏季炎热多雨冬季寒冷干燥春季干旱多风沙秋季秋高气爽冷热适宜2规划发展宗地区位优越升值潜力大地势高...

项目工程设计任务书

项目工程设计任务书一项目概况一项目名称项目二位置项目可用资源及区域地产市场现状1位置本工程为XX项目工程位于地块为地块总用地面积平方米2项目可用资源3区域地产市场现状二项目规模一总占地面积平方米容积率总建筑面积...

项目任务书

项目任务书

房地产开发项目规划设计招标任务书范本

XXXXXXXX项目规划设计招标任务书公司年月日第1页共8页规划设计招标任务书经当地政府主管部门批准由公司作为发展商对进行开发建设特此邀请省内外境内外知名的设计单位参与该项目的设计方案竞投现将有关具体要求说明如...

科研开发项目立项任务书

项目编号山西国阳新能股份有限公司科研开发项目立项任务书项目名称3煤层掘进超前地质构造与瓦斯突出物探探测试验研究承担单位阳煤集团有限责任公司新景矿开发机构西安煤科院重庆煤科院中国矿业大学起止年月20xx年1月20...

普淜镇20xx年马铃薯丽薯6号科技示范项目计划任务书

类别编号20xx年祥云县科学技术项目计划任务书承担单位盖章祥云县普淜镇人民政府项目名称普淜镇马铃薯丽薯6号高产科技示范项目项目负责人签名张汝得电话3350015起止年限20xx年6月至20xx年12月祥云县科学...

“十三五”重点项目-电子科技产业园项目商业计划书

十三五重点项目电子科技产业园项目商业计划书编制单位北京智博睿投资咨询有限公司商业计划书英文名称为BusinessPlan是公司企业或项目单位为了达到招商融资和其它发展目标之目的在经过前期对项目科学地调研分析搜集...

江苏技术师范学院:科技创新团队建设项目计划任务书

编号科技创新团队建设项目计划任务书团队研究方向团队建设类别重点建设理工科文科研究起止时间团队负责人团队所在单位填表日期示范建设理工科文科学科建设办公室制表填写说明及要求一填写本表前请认真学习江苏技术师范学院科技...

项目任务书(9篇)