欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    手把手教你制作Flash游戏.docx

    • 资源ID:23889857       资源大小:571.48KB        全文页数:35页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    手把手教你制作Flash游戏.docx

    1、手把手教你制作Flash游戏手把手教你制作Flash游戏(火影篇)最近累,虽然有很多朋友都在等勇者2,但我实在没心情开发。闲着也是闲着,开一贴给刚刚踏上FLASH游戏开发的爱好者们写点东西。老鸟就不用看了,呵呵,贻笑大方了。FLASH游戏这东西吧,总入不了大流。国内拿FLASH做美术方面的应用比较多,而传统的游戏程序员又把FLASH当小儿科,不屑搞这个,事实上开发FLASH游戏也赚不了钱,七七八八的原因加起来,就变成了没多少职业程序员来开发FLASH游戏,学校也不会培养学生深入学习开发FLASH,搞这块的人少,人少交流讨论的也少,正正规规的教材也少,当然优秀作品更少。目前国内大部分的FLASH

    2、游戏开发爱好者没有好教材的指引,自己摸索着就上路了(NND,我也是这样开始的),开发流程和习惯都是各人一套,很多人因为没有接受正确的学习而走了很多歪路(MD,好像我也是)于是乎,话题转回来,我就开一贴跟菜鸟们多交流吧LESSON 1 游戏制作前的准备突然灵光一闪:老子要做个XX类型游戏!于是立马打开电脑,打开FLASH,找图片,建元件,F9一按,代码蹭蹭的打啊结果做了一半做不下去了。以上情况常常发生做游戏首先脑子里先要有整个游戏的规划,最好是拿笔画个流程简图,然后再下手。游戏流程的规划是很重要的,我在做一个游戏游戏前,草稿纸上来来回回要打个半天的草稿才开工,我一直认为游戏的规划部分是很难的,如

    3、果真等到全部想好了,做起来其实是个很轻松的过程,只是耗时间罢了。理论知识多说没用我们不如来实践下,跟我一起做个简单的游戏吧吃金币游戏-策划(我在草稿纸头上写下以下几点)基本描述:1.天上掉宝物,地下小人物由自己控制,去接宝得分 2.时间限制30秒 写到这里,顺手画了张草图画好草图,我继续在草稿纸上又写下详细的几处描述:1.宝物分四种:金币10、金币50、增加时间的宝物、瞬间获得屏幕所有金币的宝物 2.要有两个人能选,一个人物太无聊 3.人物样子不能太傻(这条请忽略) 4.最好来点技能!(晕- -不是说简单游戏么) 5.要能记录我最高得分,有点挑战性! 6.玩到后面最好难度慢慢增加,就让下落物品

    4、速度加快吧! 7.即使小游戏,音乐音效也应该有的 8.(占位中.) 写到这里,我又想了想,又画了张草图大概想了下这个小游戏的运行过程鉴于我这个人脑子不好使,我又一样样统计了下一共有多少东西。见下图:1.人物 2.宝物 3.时间显示的东西 4.分数显示的东西 5.选择人物还有游戏结束后历史高分的两个提示板 6.背景图片和音乐音效 好了,游戏不管大小,我基本动手干活前这些基本的流程都要走。为的是明确整个游戏的过程,然后统计下有多少东西要做,然后一样样做呗。接下来就是搜集要用到的素材。我找了张背景图,找了两张火影的卡通人物:鸣人和小李。接下去就是先把要用到的动画元件做好。然后就开始考虑程序部分(后面

    5、几讲重点)。P.S.看到这里,有人要骂了,小样是不是发个半吊子帖子来骗分啊?为了表明我不是骗子- -.我今天把这个小东西做了下。因为纯教学讲解用,所以只简单做了两个人物和几个道具,等大家学完后可自行扩充改写。(为了写这个帖子我今天特意做的,没功劳也有点苦劳啊)版主给点分升级啦很多图我都传不上控制,键盘方向左右操作,上键小李长按是加速,鸣人是跳跃。下节讲讲AS方面的开发布局,待续我们讨论下AS的问题。先不急于动手打代码,我们先要想好这代码怎么个写法,怎么个安排。好,现在小鸟们排好队,一个个来回答,你准备怎么写:10个小菜鸟9个会回答:我X你的傻X!还能怎么写?F9按了开始写啊gotoandpla

    6、y啊,onrelease啊,if啊该写啥写啥咳咳,事实上,也没错。游戏也能这么出来。不过我个人推荐我们该融入点面向对象编程的概念。啥?NONONO我不是要开始讲复杂的东西我尽量把话往简单了讲我们上讲统计过游戏大致那几个东西是吧?我们现在就把那几个东西独立开来做。用你听过的,就是分几个CLASS(类)来做。比如,人物,我们就搞个人的CLASS,宝物,我们就搞个宝物的CLASS,和传统的F9按开一股脑的打代码不同,CLASS类文件是另外写的.AS文件,然后游戏主的.SWF主文件调用的。来张图:每个CLASS都会被绑定在对应的MC上上节统计过的,游戏一共就那么几个MC,每人把自己对应的小蜜绑好合成一

    7、体,在舞台上一合成,就是个完整的能运作的游戏了这样的结构有什么好处?1.清晰,修改起来方便,知道哪的问题上哪个地方改 2.CLASS封装性好,不受其它MC和CLASS的影响 3.因为2的原因,所以适合好几个人一起开发。比如今天你要去谈恋爱,你就拉了隔壁阿三,告诉他要做个怎么样的CLASS,名称和哪几个变量以及实现的功能,然后阿三做好,你就拿来可以直接用了。 4.把整个游戏一个个零件拆开做,不容易犯错。 5.看上去比较专业,不懂行的一看,NND,搞的跟专业开发人员一样,拉风毙了 在具体讲解CLASS构造前,想花点篇幅帮小鸟们理解下CLASS是什么东东。还是来举个例子,有一个机械战士的MC,这个M

    8、C里有机械战士完整的构造,手脚、身体、武器但这个机械战士仍然不能动,因为它只是一具机械,没有大脑程序告诉它该怎么走动,怎么攻击而我们做的“机械战士控制.as”的CLASS,绑定在这个战士身上。这个CLASS可以看作为一个封闭的黑匣子,里面装载了指导机械人行动的程序,包括怎么移动、怎么攻击、怎么做事情A、怎么做事情B。而这一切都是封闭在黑匣子里的,影响不到外界程序,外接程序也影响不到它。是个独立的东西。这个黑匣子可以装载到任何一个机械战士身上,任何一个机械战士躯体的MC一旦绑定上这个CLASS,就能立即行动起来。而且我们可以给这个CLASS做个外界可以调用的接口。就像黑匣子上装了个可以给外界摁的

    9、按钮,你摁一次它就发一次绝招。象上一节说的,CLASS模式做游戏可以团队开发。我可以让别人帮我做CLASS,做好我拿来用。我不需要知道他代码怎么写的,我只需要知道这个CLASS能让这个机械人按照什么规则行动,有什么按钮可以让我摁。封装性的好处由此显示出来了。再闯关游戏里,经常出现比如画面上主角一人对N个敌人的场面。这些敌人每个都可以绑定同一个CLASS。就是说写了一个CLASS分别装载到N个实例化的MC中去,而不用每个敌人都各自写一段代码。可能其中两个敌人的生命和攻击力不同。这也很简单,在CLASS里做一个接收外部传入生命和攻击力两个参数的功能,在敌人MC绑定CLASS后,再传生命和攻击力两个

    10、变量的值到MC里即可。不过要说明,CLASS并不是只能实例化在MC上,还可以装在例如Object之类的上面。比如我们很常用的一个FLASH本来就有的CLASS:SOUNDmySound=new Sound()mySound.attachSound(a.mp3)mySound.start(0,1)这里我们就可以看作Sound类实例化了在mySound的上,而attachSound和start都是Sound类的“按钮”,可以让外部操控这个装载了Sound类的mySound。我们并不知道Sound这个CLASS内部代码是如何的,但我们知道按钮可以用来干什么,用的也不是很爽吗?前面说了CLASS的基本

    11、应用,可能有鸟鸟们要问了,我做个function一样可以用啊,或者在MC里敲代码,跟你写CLASS一样。那为什么还要写CLASS啊?那下面我就来写点CLASS的另外个重要的特性-“继承”先来个小例子:隔壁阿三写了个类“机器人控制.as”,里面写了若干行的代码,包括“移动、跳跃”两个个功能。我现在也想写个类“超级流氓机器人.as”,里面包括“移动、跳跃、攻击”三个功能。和阿三写的类比较起来,“移动、跳跃”两个功能是一样的啦,我想写的类只多了个“攻击”功能于是可以偷懒了。在我写的类“超级流氓机器人.as”第一行加句简单的代码,就可以把阿三写的类完全COPY过来。(代码语法命令后面的课程会讲的)然后

    12、我的“超级流氓机器人.as”文件里,内容就只有段写“攻击的代码”。看到这里,鸟鸟们又要问了,为什么不直接ctrl+c然后ctrl+v把阿三写的类复制过来,然后在里面加?1.别人写的代码,复杂的要死,反正我脑子转不过来,不想去分析别人的东西。分析别人写的代码,痛苦的来 2.日后我再要写个“移动、跳跃、翻滚”的代码,我不是还要再ctrl+c然后ctrl+v?多麻烦! 3.假使我用ctrl+c然后ctrl+v的方法做了,但突然发现“移动”功能里有个错误要改郁闷吧?你要一个个.as文件改了。而如果是继承的方法做的,你只要让阿三把他写的类修改了,你自己写的两个类就一点不需要改动了,因为“移动”部分的功能

    13、,是直接继承过来的嘛 说到这里,顺带再提下,FLASH里我们经常也在用类,只是你感觉不到。做游戏用到最多,同时也是FLASH里最重要的类,就是“MovieClip类”!鸟鸟们不知不觉的就一直在用MovieClip类,比如你有没有经常写:mc.onEnterFrame.onEnterFrame就是MovieClip类里的一个方法,只要是个MC(自动被绑上了MovieClip类),就都能用onEnterFrame。现在回到第一节说的那个天上掉宝地下人物接的游戏。人物有两个:小李和鸣人经过分析,这两个人物基本控制部分是一样的,然后就区别在两个人的各自的特殊技能不一样。于是我们可以这么做:1.先建个“

    14、人物基本控制.as”类 2.建个“小李.as”类,第一行一句代码继承“人物基本控制.as”类,然后在正文内容里写上小李特殊技能 3.建个“鸣人.as”类,第一行一句代码继承“人物基本控制.as”类,然后在正文内容里写上鸣人特殊技能 见图:大家可以看到,“人物基本控制.as”类也是继承了MovieClip类,因为要用到MovieClip类里的功能嘛比如人物移动要用到onEnterFrame,MC._x,MC._y这点功能。类的继承,还可以覆盖继承过来类里的方法。比如A类有move、jump、attack三个方法我要写个B类,也包括这三个方法,但是attack这个方法和A类的attack有点不同,

    15、而move、jump这两个方法则和A类里的一模一样。于是我们写B类,第一行先写句话继承了A类。然后在正文里把attack方法重写一次,就自动覆盖掉了继承过来的A类的attack方法。其它的方法就不用写了,因为直接继承过来了。让我们来换个思路做上面那个例子。直接写了“小李.as”类,然后让“鸣人.as”类继承小李类,正文里只需要把特殊技能方法重写遍就OK了。见图:看了那么多概念,小鸟们要想,咋还不教具体怎么写CLASS呢?别急啊,下节里会简单的教些的。其实我对这种死东西教学还是比较头大的,鸟鸟们也可以自己网上搜下具体CLASS撰写格式、规矩和变量、方法类型。肯定比我教的要详细。因为我在CLASS

    16、方面也只能算只比小鸟略微胖点点的中鸟啊,哈哈本来不想写这节的,因为这节的内容很多书上或者网上资料都有,而且写的比我要详细正规得多。但后来想想,还是写吧!而且后面几节要结合接宝的范例游戏,具体分析它的几个CLASS,所以,还是用一节把CLASS的写法说一下。可能我对CLASS的写法也不是很正规,有老鸟看了后,最好也能指点一下。先来个CLASS基本的模式。文件名:Time_control.asclass Time_control /第一部分:声明本CLASS要用到的变量 static var a:Number=2; private var b:Number; private var c:Numbe

    17、r=1; public var d:Number; /第二部分:构造函数 function Time_control() init(); /第三部分:隐式设置-获取法 public function set _d(sss:Number):Void d = sss; public function get _d():Number return (d); /第四部分:私有和公有方法 private function init() /一般写点初始化的内容 private function aa() public function bb() 如果是要继承类,比如继承MovieClip类,第一行就改写成

    18、class Time_control extends MovieClip 下面简单解释下各个部分(我最不擅长解释说明这类东西)CLASS类都是以class 类名称 内容的形式,而且类名称和文件名要相同。CLASS的内容分四部分第一部分声明本CLASS所用到的变量,这里要提的是,和在SWF里定义变量不同。SWF里你可以用比如a=1这种自动变量形式,而在CLASS里你必须写明a的类型是Number,再定义变量值是1 第二部分是CLASS的构造函数,什么意思呢?就是当CLASS的实例出现后,自动执行这个function里的内容,一般都是些初始化的内容。function的名称要和CLASS类的名称一样

    19、哦而且这里初始化一般都是用个init()函数,init函数具体在后面回自己定义。为什么要这样而不直接把初始化内容写在构造函数内呢?因为当继承其它类的时候,构造函数是不能继承的,还得自己再写一次,而init函数是可以继承的,于是呵呵,懒人懒办法嘛直接把内容写在构造函数里的话,每次继承就还要重写次,用自定义init函数的话,就可以偷懒咯 第三部分是定义隐式设置-获取的function,什么意思呢?上节我们说过,class可以看作一个封闭的盒子,跟外界无关。但有时候我们必须读取或者改变CLASS类内的某个变量。这时候就必须借助隐式设置-获取的function。只有定义后,外界才能读取和设置CLASS

    20、内的变量。定义的方法就是比普通function多了get/set这个单词。而且必须要指定返回变量类型,无需返回则用Void表示。 第四部分就是写function咯这个就不具体说了,function大家老写了 可能大家看到,class里比平时大家写的,多了private和public,还有static这三个词啥意思捏?简单简单的说下:private与public定义的变量和方法都能在CLASS内一样使用,没啥区别而不同的地方就是,public定义的变量和方法能够被外界读取设置和使用,而private则不能,只能在封闭的CLASS内使用。比如public var d:Number=1设置了变量d是

    21、public型的然后在第三部分写下:public function set _d(sss:Number):Void d = sss; public function get _d():Number return (d); 当CLASS实例化在了一个MC后trace(MC._d)就得到1输入MC._d=2后,MC内的d就变成2啦而private设定的变量,你从外部既不能读取也不能赋值。自己仔细体会下同理,例如:public function 发绝招就像上几节图里那个封闭盒子上的发绝招按钮,实例化到MC后,就可以直接MC.发绝招()来让MC执行 发绝招() 这个function而static定义的

    22、变量,怎么跟大家描述呢它不存在于CLASS的实例化里。而且static定义的变量,是被所有CLASS实例共享的。还是来个例子吧:舞台ATTACH个MC,绑定的ccc.as类。类里有个static变量s=1。ccc类里初始化函数init()里让s+,这时候s就等于2了是吧?然后继续在舞台ATTACH个MC,绑定的ccc.as类,这个MC的s就直接等于2了。然后它在初始化函数里同样执行了s+,这时候两个MC里的s都同时变成了3这就是所有CLASS实例共享static变量。怎么说呢,CLASS撰写方面,我自己也不是很行,可能还存在少许的理解误区或者缺少技巧经验。希望老鸟也指导下。关于这节,我建议新鸟

    23、鸟们最好自己再找点正规教材自己学习下。单靠这节写的些鸟文,小鸟对CLASS还不能很好的认识。正常。所有的知识只有通过实战才能真正的理解。在下节里,我会详细的开始教那个接宝游戏怎么做。具体的代码怎么写。CLASS怎么写怎么用。手把手的教鸟们学做这个范例游戏。搞了半天的鸟CLASS,我们又回到了做游戏的内容上来。咱们学那么多知识,目的也只为了更好的来做游戏。这个游戏吧,前面也有朋友说到了,根本不用CLASS,做个单个FLA文件F9按了猛打代码,然后MC里点开了东鸟点代码,西鸟点代码,也能完成。没错,确实这样。我自己相当长一段时间内也是不懂CLASS之流,只用一个FLA文件,代码全死敲里面,也做出不

    24、少洋洋得意自以为是的小游戏。我自己本身就不是科班出身的鸟,当年差了十分没能进计算机系,错过了接受正规编程教育的大好光阴。(不过事后发现世界是奇妙的,我做过几个单位从事正职编程的都不是计算机系毕业的)但当小游戏逐渐变成大游戏后,一个FLA里,root里,MC里代码开始多起来,关系开始复杂起来,于是制作者头也开始大起来,直接影响到睡觉睡不好,饭也吃不好,肠胃不通,消化不良,上班没精神于是,就必须要正规的,能让脑子清醒的,能轻松分辨游戏里各类关系的开发方法。再于是,我每天买瓶水,学习了CLASS方面的知识。(日,学CLASS和买水有啥关系?)话题扯远了,让我们再次回到接宝上来。一楼那个我做的简单范例

    25、SWF大家看过了没?什么?没?赶快去下了,试着玩玩。给你5分钟,玩好再继续往下看。(5分钟的等待)好,试玩过了对吧?我现在问你,要你分析游戏里的逻辑关系,你怎么分析?给你5分钟思考。(5分钟的等待)是不是:天上不间断掉宝-当地下人物碰到宝,就获得相应的奖励。时间到就结束游戏。是这样的。但我思考问题,是按:1.游戏时画面上有几大元素?(MC)2.每个MC要实现什么功能?从每个MC的角度来思考分析游戏的构成。你也要习惯这样,因为我们以后要从MC的角度来编写CLASS,每类MC都会有个对应的CLASS类来告诉这个MC在游戏中该做什么。各个MC拼合起来,就成了一个游戏。简单游戏和复杂游戏的一个区别,就

    26、是游戏里元素多少,元素多了,逻辑复杂,元素少了,逻辑简单。好,请鸟鸟们继续思考,接宝游戏里有几大元素(MC)?它们各自要做点什么?给你10分钟(10分钟的等待)见图:公布答案:1.人物 2.宝物 3.分数(右上角) 4.时间(左上角) 5.游戏总控制(包括选人、最后最高分显示) 每类各自要做的事情:人物:1.能够左右按键移动控制移动2.移动范围限定(不能跑出屏幕吧?)3.按上键技能4.一些初始化设定(刚开始出现的坐标,移动速度)宝物:1.按随机速度下落,落出屏幕消失 2.碰撞检测,是否碰到人物 3.碰到人物后产生加分、加时间等不同的效果 4.初始化设定(刚开始出现的坐标,移动速度) 分数:1.

    27、显示分数时间:1.30秒倒计时,显示时间变化 2.到了0秒,通知游戏控制执行结束游戏的function 游戏控制:很重要的部分,要控制协调以上几个元素之间的关系,以及游戏的过程。集合了很多种function供调用以下规整下包含的function1.人物选择:按照人物选择框的选择,attach人物MC到舞台(人物attach进来后,就会自动按照他自己的CLASS行动啦),同时调用掉宝控制的function开始掉宝以及时间控制里倒计时方法,开始30秒倒计时。 2.掉宝控制:按照随机时间间隔,随机的attach宝物种类到舞台(一样!宝物attach进来后,就会自动按照他自己的CLASS行动) 3.金

    28、币消失:这个funtion要在时间到0时被调用,作用是让屏幕上的金币原地消失 4.游戏结束:这个function是被时间控制里当时间=0的时候调用的,作用为判断比较当前得分和最高分,显示框出现显示最高分。 说了那么多,不知道大家思路跟不跟的上按我说的仔细思考下吧要直到能理解我说的,才能继续看下一小节。下一小节开始,我要一个个放出各个CLASS的具体代码了,并进行详解,请时刻关注哦!附:编写好的CLASS怎么关联到MC?就拿上节例子Time_control.as来说吧,要关联到库里的元件时间老鼠右击元件时间,然后见图:如果是自己拖到舞台上,“第一帧导出”就不选如果是attach上舞台,则就要选哦

    29、范例接宝游戏中人物类的CLASS讲解首先请下载源文件:CLASS.rar下载好,打开一看,如下:一个FLA主文件: orun_game.fla 三个目录: oplayer oitems ogame 我把.as类文件分门别类的存放,这样看上去清晰,更重要的是别人看了会觉得我很专业。目录player里有: oPlayer_1.as oPlayer_2.as 目录items里有: oJin.as oBao1.as oBao2.as 目录game里有: oGame_control.as oScore_view.as oTime_control.as .as具体意义看文件名就应该能知道,这里要说的是,一

    30、般默认的规则,放CLASS目录用小写字母命名,.as的类文件名的首字母用大写这节详细讲下人物类的CLASS,首先是Player_1.as,人物小李的类首先去源文件里点进人物1的MC,看下结构。由两帧组成,一是“stand”,二是“run”人物上面有一层有个圆形的MC,我把它命名为hit,靠这个mc来做碰撞检测。金币里面也有这个名叫hit的MC,我判断人物和金币是不是相碰是用这个语句的: 金币MC.hit.hitTest(人物MC.hit)传统碰撞检测都这么做。又开始扯话题了,马上拉回来现在拿出Player_1.as的代码class player.Player_1 extends MovieClip private var hit:MovieClip;


    注意事项

    本文(手把手教你制作Flash游戏.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开