前言:
这一节创建一个和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;