LESSON 10 范例接宝游戏中游戏控制类的CLASS讲解
终于讲到这节了,累死,也饿死,为了明年年初要拍婚纱,我每天中午就吃个苹果减肥,然后靠苹果的能量再给鸟鸟们写教程……
今天算是暴走式的更新速度了,从第7节写到了第10节,胃软导致了手软,手软导致了脚软,较软导致了XX也软……
版主看到,体恤下吧,加点分,我好早日升中级会员……(咳咳)
本节讲的是最后一个类:游戏控制类
我自己每个游戏都会在舞台上有这个MC帮我看场子,指挥调度手下的兄弟,提供各类凶器,把握整个进程……
这个游戏的游戏控制类:Game_control.as
先点开FLA里的MC,看看它的构造。
有两个框,一个是选择人物的,一个是显示最高得分的。
我用它们两的visible属性控制它们可见和不可见。
Game_control.as把握着整个游戏的进程,提供了一些方法。
先看它怎么控制游戏的:
1.先初始化游戏参数,然后让选人框可见,让玩家选人。
2.玩家选好人,它就把人物attach到舞台上,同时通知‘时间控制类’这个小弟你可以30秒倒计时了,又同时开始在天上撒金币和宝物。
3.‘时间控制类’小弟一看时间到0了,马上又来通知大哥,时间到0了
4.大哥收到风声后,停止撒金币,让画面上已有的金币宝物全部消失,同时一番比较后显示出你的历史最高分,同时提供你个重新游戏的按钮
5.按重新游戏,大哥就回到第1步……
(好像所有小弟里,只有分数显示自管自工作,没有被大哥叫到)
它包含了一些方法,供小弟和自己用:
1.初始化数据:init()
2.根据玩家选择,在舞台上attach人物:chose(n:Number)
3.天上播撒金币和宝物:onGame()
4.屏幕上宝物消失:jin_disappear()
5.结束游戏,比较得分和最高分,让显示框显示最高分:endGame()
对照着我们来看下代码
复制内容到剪贴板
代码:
class game.Game_control extends MovieClip {
private var t:Number = 1;
private var game_begin:MovieClip
private var game_end:MovieClip
private var depth:Number
private var topScore:Number=0
public var time:Number;
//构造函数
function Game_control() {
init();
}
//隐式设置方法
public function set _time(ttt:Number):Void {
}
//公-私有方法
public function init() {
time=35
_root.score = 0;
_root.createEmptyMovieClip("pl", 3);
_root.createEmptyMovieClip("item", 2);
_root.createEmptyMovieClip("xs", 1);
//初始化里建立空MC,同时也就是把以前的MC删除覆盖
game_begin._visible=true
game_end._visible=false
_root.music_control.bg(1)
}
public function chose(n:Number) {
game_begin._visible=false
_root.pl.attachMovie("ren"+n, "player", 1);
_root.time_c.Go()//时间控制小弟~号开始倒计时啦~
_root.music_control.bg(2)
onEnterFrame = onGame;
}
private function onGame() {
t++;
if (t%time == 0) {
depth=_root.item.getNextHighestDepth()
if (random(8) == 0) {
var a:MovieClip=_root.item.attachMovie("bao"+(1+random(2)), "bao"+depth, depth++);
}
else if (random(5) == 0) {
var a:MovieClip=_root.item.attachMovie("jin2", "jin"+depth, depth++);
a.score=50
} else {
_root.item.attachMovie("jin1", "jin"+depth, depth++);
}
time = 20+random(30);
}//这段自己仔细看下,就明白怎么随机时间间隔里播撒出随即类型的宝物了
}
private function jin_disappear() {
for(var i:String in _root.item){
_root.item[i]._speed=0
_root.item[i]._bspeed()//这个方法Jin.as里写过的,还记得吗?哈哈
_root.item[i]._alpha-=5
_root.item[i]._xscale+=2
_root.item[i]._yscale+=2
if(_root.item[i]._alpha<0) {
_root.item[i].removeMovieClip()
delete onEnterFrame
}
}//大小和alpha同时变化直到宝物消失~
}
public function endGame(){
onEnterFrame=jin_disappear
game_end._visible=true
if(_root.score>topScore) {
topScore=_root.score
game_end.sc=topScore
}//判断和记录历时最高分,同时显示最高分框显示~
}
}事实上在人物选择框,两个人物是按钮,用来调用‘游戏控制’类里的chose(n:Number)方法。
当chose(n:Number)被调用时,后面一连串的进程就都自动展开了……
今天一下子讲的太多了,能消化掉吗?
游戏主体也就这样了。剩下点小东西,比如声音控制,下节课讲。
[
本帖最后由 cloudy1982 于 2007-10-17 16:48 编辑 ]