前言:示例的代码都是由中文写的,不知道大家看得惯不?本想查查词霸,弄几个e文地,但怕词不达意,岂不是贻笑大方~见谅
俺是一个马戏团地,团长让俺安排安排今晚的节目表演。要求嘛,就是第一个上场的演员先要致个开场白什么地,再就是上场的演员都要再做个"我是谁谁谁"的介绍啥地。俺迅速就草就了如下安排程序:
----演员.as----
class 演员{ static var 演员人数:Number =50; var _知名度:String ="大碗"; var _姓名:String; function 演员(姓名) { _姓名 = 姓名; 演员.开幕演说(); 自我介绍(); } static function 开幕演说(){ trace("欢迎各位大虾光临‘维艺--Flash’代码乐园,本乐园有"+演员.演员人数+"位小闪的强大阵容!"); } function 自我介绍(){ trace("现在由我"+_知名度+_姓名+"给大家表演节目,请大家给我点掌声,好不好?什么?我没听见!再热烈点!"); } }
然后,俺就开始彩排啦: ----表演.fla ---- (注:第一帧上代码)
彩排(其实就是"测试"哦)的结果非常之糟糕,前面上来的把"欢迎各位大虾"等等罗嗦了一遍,后面上来的又把"欢迎各位大虾"罗嗦了一遍~
不用说俺受到了团长严厉地批评,俺仔细检查了一遍程序后,发现错误出在这一句:
function 演员(姓名) { _姓名 = 姓名; 演员.开幕演说(); 自我介绍(); }
这里的"演员.开幕演说"本应是一个执行一次的方法,因为放到了构造函数里,所以每上来一个演员就罗嗦一通啦。但该把它放到哪里呢?这样吧:
//这里省略若干代码,请参考上面 演员.开幕演说(); function 演员(姓名) { _姓名 = 姓名; 自我介绍(); }
结果一彩排,犯了众怒,警告我说: "第 5 行: 类定义中不允许此语句。 演员.开幕演说(); " 我也急了,大声地吼到:"好好好!我不管了!现在我把它从程序里拿掉!由我自己来致欢迎词好啦!" 以后每次表演,就成了这样: ---表演.fla--- (注:第一桢上代码)
演员.开幕演说();//神啊,救救我吧!我真怕自己一时疏忽忘了致开幕词哦~~ var wiyi=new 演员("维艺--Flash"); var lz=new 演员("老张"); var xl=new 演员("小李"); ... ...
终于有一天,我忘了致开幕词,挨了团长一顿臭骂,让我给猴子搔痒去! 伤自尊咧~俺就不信处理不了这个演员程序!这是俺再次努力的结果: class 演员{ static var 演员人数:Number =50;// 初始化类变量. static var __开幕演说:Boolean = 演员.开幕演说();//初始化类变量,实际上等同于执行类方法. var _知名度:String ="大碗";//设定对象'知名度'属性的默认值. var _姓名:String;//声明对象的'姓名'属性. function 演员(姓名) { _姓名 = 姓名;//初始化对象的姓名属性. 自我介绍();//执行对象的方法. } static function 开幕演说(){ //类方法 trace("欢迎各位大虾光临‘维艺--Flash’代码乐园,本乐园有"+演员.演员人数+"位小闪的强大阵容!"); } function 自我介绍(){ //对象方法 trace("现在由我"+_知名度+_姓名+"给大家表演节目,请大家给我点掌声,好不好?什么?我没听见!再热烈点!"); } }
按照这次的演员程序,再次彩排: ---表演.fla---
var wiyi=new 演员("维艺--Flash"); var lz=new 演员("老张"); var xl=new 演员("小李"); ... ...
彩排结果显示: 欢迎各位大虾光临‘维艺--Flash’代码乐园,本乐园有50位小闪的强大阵容! 现在由我大碗维艺--Flash给大家表演节目,请大家给我点掌声,好不好?什么?我没听见!再热烈点! 现在由我大碗老张给大家表演节目,请大家给我点掌声,好不好?什么?我没听见!再热烈点! 现在由我大碗小李给大家表演节目,请大家给我点掌声,好不好?什么?我没听见!再热烈点!
哈哈!俺成功了!至于为什么成功,俺在最后的 演员.as 里给出了详细的注释,你自己去看看吧!特别要留心这句哦:
static var __开幕演说:Boolean = 演员.开幕演说();
这是初始化执行类方法的门道所在哦!欢迎大虾不吝赐教、指正!
源文件下载
出处:闪客帝国
责任编辑:qhwa
◎进入论坛Flash专栏版块参加讨论
|