手把手教你制作Flash游戏
做。
用你听过的,就是分几个CLASS(类)来做。
比如,人物,我们就搞个人的CLASS,宝物,我们就搞个宝物的CLASS,和传统的F9按开一股脑的打代码不同,CLASS类文件是另外写的.AS文件,然后游戏主的.SWF主文件调用的。 来张图:
每个CLASS都会被绑定在对应的MC上
上节统计过的,游戏一共就那么几个MC,每人把自己对应的小蜜绑好合成一体,在舞台上一合成,就是个完整的能运作的游戏了\\
这样的结构有什么好处?
1. 清晰,修改起来方便,知道哪的问题上哪个地方改 2. CLASS封装性好,不受其它MC和CLASS的影响
3. 因为2的原因,所以适合好几个人一起开发。比如今天你要去谈恋爱,你
就拉了隔壁阿三,告诉他要做个怎么样的CLASS,名称和哪几个变量以及实现的功能,然后阿三做好,你就拿来可以直接用了。 4. 把整个游戏一个个零件拆开做,不容易犯错。
5. 看上去比较专业,不懂行的一看,NND,搞的跟专业开发人员一样,拉风
毙了 在具体讲解CLASS构造前,想花点篇幅帮小鸟们理解下CLASS是什么东东。 还是来举个例子,有一个机械战士的MC,这个MC里有机械战士完整的构造,手脚、身体、武器??
但这个机械战士仍然不能动,因为它只是一具机械,没有大脑程序告诉它该怎么走动,怎么攻击??
而我们做的“机械战士控制.as”的CLASS,绑定在这个战士身上。
这个CLASS可以看作为一个封闭的黑匣子,里面装载了指导机械人行动的程序,包括怎么移动、怎么攻击、怎么做事情A、怎么做事情B。
而这一切都是封闭在黑匣子里的,影响不到外界程序,外接程序也影响不到它。是个独立的东西。
这个黑匣子可以装载到任何一个机械战士身上,任何一个机械战士躯体的MC一旦绑定上这个CLASS,就能立即行动起来。
而且我们可以给这个CLASS做个外界可以调用的接口。
就像黑匣子上装了个可以给外界摁的按钮,你摁一次它就发一次绝招。
象上一节说的,CLASS模式做游戏可以团队开发。我可以让别人帮我做CLASS,做好我拿来用。我不需要知道他代码怎么写的,我只需要知道这个CLASS能让这个机械人按照什么规则行动,有什么按钮可以让我摁。 封装性的好处由此显示出来了。
再闯关游戏里,经常出现比如画面上主角一人对N个敌人的场面。这些敌人每个都可以绑定同一个CLASS。就是说写了一个CLASS分别装载到N个实例化的MC中去,而不用每个敌人都各自写一段代码。
可能其中两个敌人的生命和攻击力不同。这也很简单,在CLASS里做一个接收外部传入生命和攻击力两个参数的功能,在敌人MC绑定CLASS后,再传生命和攻击力两个变量的值到MC里即可。
不过要说明,CLASS并不是只能实例化在MC上,还可以装在例如Object之类的上面。
比如我们很常用的一个FLASH本来就有的CLASS:SOUND mySound=new Sound()
mySound.attachSound(\mySound.start(0,1)
这里我们就可以看作Sound类实例化了在mySound的上,而attachSound和start都是Sound类的“按钮”,可以让外部操控这个装载了Sound类的mySound。我们并不知道Sound这个CLASS内部代码是如何的,但我们知道按钮可以用来干什么,用的也不是很爽吗?
前面说了CLASS的基本应用,可能有鸟鸟们要问了,我做个function一样可以用啊,或者在MC里敲代码,跟你写CLASS一样。 那为什么还要写CLASS啊?
那下面我就来写点CLASS的另外个重要的特性-“继承” 先来个小例子:
隔壁阿三写了个类“机器人控制.as”,里面写了若干行的代码,包括“移动、跳跃”两个个功能。
我现在也想写个类“超级流氓机器人.as”,里面包括“移动、跳跃、攻击”三个功能。
和阿三写的类比较起来,“移动、跳跃”两个功能是一样的啦,我想写的类只多了个“攻击”功能~ 于是可以偷懒了。
在我写的类“超级流氓机器人.as”第一行加句简单的代码,就可以把阿三写的类完全COPY过来。(代码语法命令后面的课程会讲的)
然后我的“超级流氓机器人.as”文件里,内容就只有段写“攻击的代码”。 看到这里,鸟鸟们又要问了,为什么不直接ctrl+c然后ctrl+v把阿三写的类复制过来,然后在里面加?
1. 别人写的代码,复杂的要死,反正我脑子转不过来,不想去分析别人的东
西。分析别人写的代码,痛苦的来~
2. 日后我再要写个“移动、跳跃、翻滚”的代码,我不是还要再ctrl+c然
后ctrl+v?多麻烦!
3. 假使我用ctrl+c然后ctrl+v的方法做了,但突然发现“移动”功能里有
个错误要改??郁闷吧?你要一个个.as文件改了。而如果是继承的方法做的,你只要让阿三把他写的类修改了,你自己写的两个类就一点不需要改动了,因为“移动”部分的功能,是直接继承过来的嘛~
说到这里,顺带再提下,FLASH里我们经常也在用类,只是你感觉不到。 做游戏用到最多,同时也是FLASH里最重要的类,就是~~~~~~~~~“MovieClip类”!
鸟鸟们不知不觉的就一直在用MovieClip类,比如你有没有经常写:mc.onEnterFrame..
onEnterFrame就是MovieClip类里的一个方法,只要是个MC(自动被绑上了MovieClip类),就都能用onEnterFrame。
现在回到第一节说的那个天上掉宝地下人物接的游戏。
人物有两个:小李和鸣人
经过分析,这两个人物基本控制部分是一样的,然后就区别在两个人的各自的特殊技能不一样。 于是我们可以这么做:
1. 先建个“人物基本控制.as”类
2. 建个“小李.as”类,第一行一句代码继承“人物基本控制.as”类,然后
在正文内容里写上小李特殊技能
3. 建个“鸣人.as”类,第一行一句代码继承“人物基本控制.as”类,然后
在正文内容里写上鸣人特殊技能 见图:
大家可以看到,“人物基本控制.as”类也是继承了MovieClip类,因为要用到MovieClip类里的功能嘛~比如人物移动要用到onEnterFrame,MC._x,MC._y这点功能。
