前言:
這一節創建一個和pauseLayer差不多的scoreLayer界面,每個遊戲結束都需要展示分數;
如果怪物被擊中三次,顯示結束分數界面;
效果圖
代碼下載
https://github.com/makeapp/cocoseditor-samples (snow-score)
代碼分析
1 創建ScoreLayer.ccbx主要裏面的元素target是Owner自定義,而不是doc;
2 遊戲結束函數;
從ccbx下載關聯scoreData,that.scoreLayer = cc.BuilderReader.loadAsNodeFrom("", "ScoreLayer", scoreData);
scoreData裏面有三個函數 一個顯示星星個數的scoreGrade,根據你玩的情況給出評級,這裏默認兩個星;
另兩個是按鈕事件onScoreRenewClicked重新開始和onScoreNextClicked回到選關界面
MainLayer.prototype.gameOver = function () {
//show score layer
this.gameStatus = END;
this.currentLevelStarNum = 2;
var that = this;
this.rootNode.scheduleOnce(function () {
var scoreData = {
star1: {},
star2: {},
star3: {},
scoreGrade: function () {
var stars = [this.star1, this.star2, this.star3];
for (var i = 0; i < stars.length; i++) {
if (i < that.currentLevelStarNum) {
stars[i].initWithSpriteFrameName("m_star_s.png");
}
}
},
onScoreReplayClicked: function () {
cc.Director.getInstance().resume();
cc.BuilderReader.runScene("", "MainLayer");
},
onScoreLevelClicked: function () {
cc.Director.getInstance().resume();
cc.BuilderReader.runScene("", "GameSelectLayer");
}
};
that.scoreLayer = cc.BuilderReader.loadAsNodeFrom("", "ScoreLayer", scoreData);
that.scoreLayer.setPosition(cc.p(0.5, 0.5));
that.scoreLayer.setZOrder(10000);
that.rootNode.addChild(that.scoreLayer);
cc.AudioEngine.getInstance().stopAllEffects();
cc.AudioEngine.getInstance().stopMusic(true);
scoreData.rootNode = that.scoreLayer;
scoreData.controller = that;
scoreData.scoreGrade();
cc.Director.getInstance().pause();
}, 0.5)
}
over;