先補充個游戲里的結構:
_root下有三個空MC: pl,item和xs
pl這個空MC是用來attach人物的
item這個空MC是用來attach寶物的
xs這個MC是用來attach顯示得分的
為什么要這么做呢?……因為管理方便呀~以后你會慢慢體會到的。
嚴重警告:第7課未搞懂看明白者,請回上節反復研究,直至搞懂。不然繼續往下看會讓你體內真氣逆行,任、督二脈自鎖,全身猶如螞蟻咬,飯吃不下,覺睡不著,放P惡臭,對FLASH喪失學習信心……
(……)
好了,能看到這行的,說明你已經是個消化第7節內容的鳥了。
這一節我也話不多說,直接放代碼了。用你第7節學到的內容自我檢驗下。
金幣10和50共用的CLASS
class items.Jin extends MovieClip {
static var basic_speed:Number = 3; //下落基礎速度
public var score:Number = 10; //得分
public var speed:Number; //下落速度
private var hit:MovieClip; //聲明碰撞檢測的MC
private var depth:Number; //當寶物被人物獲得,顯示得分的MC的深度
//---構造函數---
function Jin() {
init();
}
//隱式設置-獲取方法
public function set _score(kkk:Number):Void {
score = kkk;
}//得分10還是50,傳入這個參數就能解決
public function _bspeed(){
basic_speed= 3;
trace(basic_speed)
}//這個要說明下,靜態變量basic_speed每實例化一個MC都會自我增加,所以基礎速度越來越快。這個方法是讓basic_speed變回原始的3。用于每回合開始時初始化使用。
public function set _speed(sss:Number):Void {
speed = sss;
}
//共有-私有方法
private function init() {
_x = 50+random(450);
_y = -15;
speed = basic_speed+random(50)/10;//下落速度是由基礎速度+隨機增量
basic_speed+=0.03
//trace(basic_speed)
onEnterFrame = Move;
}
private function Move() {
_y += speed;
if (_y>380) {
this.removeMovieClip();
}
/////////////////////////////////
if (hit.hitTest(_root.pl.player.hit)) {
getItem();
}
///////////////////////////////// 碰撞檢測哦~
}
public function getItem() {
_root.music_control.snd("jin");//聲音控制,以后會講到
_root.score += score;
depth = _root.xs.getNextHighestDepth();
var a:MovieClip = _root.xs.attachMovie("getScore", "getScore"+depth, depth++);//ATTACH顯示得分的MC
a.aaa.score = "+"+score;
a._x = _x;
a._y = _y;
this.removeMovieClip();
}
}
然后是兩個寶物的CLASS,繼承了金幣的類,只不過改寫了被人物吃到后的效果
愛心
class items.Bao1 extends items.Jin {
public function getItem() {
_root.music_control.snd("bao");
depth = _root.xs.getNextHighestDepth();
var a:MovieClip = _root.xs.attachMovie("getScore", "getScore"+depth, depth++);
a.aaa.score = "TIME";
a._x = _x;
a._y = _y;
////////
_root.time_c._time += 8;
///////調時間控制類的public方法,后面會講到
this.removeMovieClip();
}
}
五角星
class items.Bao2 extends items.Jin {
public var score:Number = 30;
public function getItem() {
//_root.score+=score
_root.music_control.snd("bao");
///////
for (var i in _root.item) {
if (_root.item[i]._name.substr(0, 3) != "bao") {
_root.item[i].getItem();
}
}
_root.score += score;
depth = _root.xs.getNextHighestDepth();
var a:MovieClip = _root.xs.attachMovie("getScore", "getScore"+depth, depth++);
a.aaa.score = "+"+score;
a._x = _x;
a._y = _y;
///////
this.removeMovieClip();
}
}
寶物這類,和人物類有點相似的。
下節會把時間控制類和分數控制類一起講掉。大家快把這節的內容消化了吧~