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