媒体动画 > Flash教程 > ActionScript教程 > Flash游戏开发教程:第六节 2008-10-06 01:25:40 佚名 请先阅读:Flash游戏开发教程:第五节 范例接宝游戏中人物类的CLASS讲解 首先请下载源文件:CLASS.rar 下载好,打开一看,如下: 一个FLA主文件: run_game.fla 三个目录: player items game 我把.as类文件分门别类的存放,这样看上去清晰,更重要的是别人看了会觉得我很专业。 目录player里有: Player_1.as Player_2.as 目录items里有: Jin.as Bao1.as Bao2.as 目录game里有: Game_control.as Score_view.as Time_control.as .as具体意义看文件名就应该能知道,这里要说的是,一般默认的规则,放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; //人物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 (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 = 100; _x = speed; this.gotoAndStop("run"); } else { this.gotoAndStop("stand"); } //以上是左右键的定义,应该看得懂吧? if (Key.isDown(38)) { speed = 12; } else { speed = 6; } //以上是上键的定义,按着后速度就加倍咯 range();//范围定义,内容见下面 } //---限定移动范围--- private function range() { if (_x>540) { _x = 540; } if (_x<10) { _x = 10; }//不让人物出界 }} 这个CLASS文件就是这样。按照前几节我说的结构,鸟鸟们对照这看下。能不能看懂。这里要说的是,第一行的player.Player_1,其中前面的player表示路径“.”就相当于"\",player.Player_1就相当于player\Player_1,关联到MC的时候也要这么写的。 小李的CLASS写完了然后写鸣人的CLASS 记得前几节我说的“继承”这个概念么?快去翻出来看看。 鸣人和小李就是上键技能不同,所以继承过来后,正文把按键控制重写一次就行了,其它就全继承小李的类了代码如下 class player.Player_2 extends player.Player_1 { //继承了player.Player_1类,所以只需要把两者间唯一不同的Move函数重写次就可以啦~当然构造函数还是要的 function Player_2() { init(); } //人物2的Move函数 private function Move() { if (Key.isDown(37)) { _xscale = -100; _x -= speed; if (_currentframe != 3) { gotoAndStop("run"); }//这句自己体会下,不加的话,按上键后鸣人就一直不停的在跳跃了 } else if (Key.isDown(39)) { _xscale = 100; _x = speed; if (_currentframe != 3) { gotoAndStop("run"); } } else { if (_currentframe != 3) { gotoAndStop("stand"); } } // if (Key.isDown(38)) { gotoAndStop("jump"); } range(); }} 好了,人物类就写完了。消化下。后面的宝物类大同小异,下一节再写。