ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:25.93KB ,
资源ID:5209464      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5209464.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Flash游戏开发教程3.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Flash游戏开发教程3.docx

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

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

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

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

5、;private var b:Number;private var c:Number=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(

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

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

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

9、public var d:Number=1设置了变量d是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执行

10、发绝招() 这个function而static定义的变量,怎么跟大家描述呢它不存在于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撰写方面,我自己也不是很行,可能还存在少许的理解误区或者

11、缺少技巧经验。希望老鸟也指导下。关于这节,我建议新鸟鸟们最好自己再找点正规教材自己学习下。单靠这节写的些鸟文,小鸟对CLASS还不能很好的认识。正常。所有的知识只有通过实战才能真正的理解。在下节里,我会详细的开始教那个接宝游戏怎么做。具体的代码怎么写。CLASS怎么写怎么用。手把手的教鸟们学做这个范例游戏。Flash游戏开发教程:第五节搞了半天的鸟CLASS,我们又回到了做游戏的内容上来。咱们学那么多知识,目的也只为了更好的来做游戏。这个游戏吧,前面也有朋友说到了,根本不用CLASS,做个单个FLA文件F9按了猛打代码,然后MC里点开了东鸟点代码,西鸟点代码,也能完成。没错,确实这样。我自己相

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

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

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

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

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

17、自己拖到舞台上,“第一帧导出”就不选如果是attach上舞台,则就要选哦Flash游戏开发教程:第六节范例接宝游戏中人物类的CLASS讲解首先请下载源文件:CLASS.rar下载好,打开一看,如下:一个FLA主文件:run_game.fla三个目录:playeritemsgame我把.as类文件分门别类的存放,这样看上去清晰,更重要的是别人看了会觉得我很专业。目录player里有:Player_1.asPlayer_2.as目录items里有:Jin.asBao1.asBao2.as目录game里有:Game_control.asScore_view.asTime_control.as.as具

18、体意义看文件名就应该能知道,这里要说的是,一般默认的规则,放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.Pl

19、ayer_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 (

20、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

21、= 100;_x += speed;this.gotoAndStop(run); else this.gotoAndStop(stand);/以上是左右键的定义,应该看得懂吧?if (Key.isDown(38) speed = 12; else speed = 6;/以上是上键的定义,按着后速度就加倍咯range();/范围定义,内容见下面/-限定移动范围-private function range() if (_x540) _x = 540;if (_x380) this.removeMovieClip();/if (hit.hitTest(_root.pl.player.hit) ge

22、tItem();/ 碰撞检测哦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显示得分的MCa.aaa.score = +score;a._x = _x;a._y = _y;this.removeMovieClip();然后是两个宝物的CLASS,继承了金币的类,只不过改写了被人物吃到后的效果爱心class items.Bao1 extends items.Jin public function getItem() _root.music_control.snd(bao);de

copyright@ 2008-2022 冰豆网网站版权所有

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