class 类名称 { 内容 }
的形式,而且类名称和文件名要相同。
CLASS的内容分四部分
第一部分声明本CLASS所用到的变量,这里要提的是,和在SWF里定义变量不同。SWF里你可以用比如a=1这种自动变量形式,而在CLASS里你必须写明a的类型是Number,再定义变量值是1
第二部分是CLASS的构造函数,什么意思呢?就是当CLASS的实例出现后,自动执行这个function里的内容,一般都是些初始化的内容。function的名称要和CLASS类的名称一样哦~而且这里初始化一般都是用个init()函数,init函数具体在后面回自己定义。为什么要这样而不直接把初始化内容写在构造函数内呢?因为当继承其它类的时候,构造函数是不能继承的,还得自己再写一次,而init函数是可以继承的,于是??呵呵,懒人懒办法嘛~直接把内容写在构造函数里的话,每次继承就还要重写次,用自定义init函数的话,就可以偷懒咯~
第三部分是定义隐式设置-获取的function,什么意思呢?上节我们说过,class可以看作一个封闭的盒子,跟外界无关。但有时候我们必须读取或者改变CLASS类内的某个变量。这时候就必须借助隐式设置-获取的function。只有定义后,外界才能读取和设置CLASS内的变量。定义的方法就是比普通function多了get/set这个单词。而且必须要指定返回变量类型,无需返回则用Void表示。
第四部分就是写function咯~这个就不具体说了,function大家老写了~
可能大家看到,class里比平时大家写的,多了private和public,还有static这三个词 啥意思捏? 简单简单的说下:
private与public定义的变量和方法都能在CLASS内一样使用,没啥区别
而不同的地方就是,public定义的变量和方法能够被外界读取设置和使用,而private则不能,只能在封闭的CLASS内使用。
比如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执行 发绝招() 这个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撰写方面,我自己也不是很行,可能还存在少许的理解误区或者缺少技巧经验。希望老鸟也指导下。
关于这节,我建议新鸟鸟们最好自己再找点正规教材自己学习下。
单靠这节写的些鸟文,小鸟对CLASS还不能很好的认识。 正常。
所有的知识只有通过实战才能真正的理解。
在下节里,我会详细的开始教那个接宝游戏怎么做。具体的代码怎么写。CLASS怎么写怎么
用。手把手的教鸟们学做这个范例游戏。 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来说吧,要关联到库里的元件'时间' 老鼠右击元件'时间',然后?? 见图