开发消消乐这种游戏的时候,需要实时更新游戏当中的当前关卡值、所用步数、分数。用scheduleUpdate()就可以解决。我们将分数、关卡、步数封装在GameUI一个类中,在GameLayer中new一个GameUI的对象,这是钟比较常规的思路。那么怎样才能保证实时更新这些标签呢?这时候就需要我们在new的时候传递参数,当然在GameUI的ctor中也需要传递一个参数,用来保存它里边的这些标签。代码如下:
GameUI中的核心代码:
- var GameUI = cc.Layer.extend({
- levelText:0,scoreText:0,stepText:0,gameLayer:null,ctor: function (gameLayer) {
- this._super();
- this.gameLayer=gameLayer;
- this._initInfoPanel();
- this.scheduleUpdate();
- },update: function () {
- this.levelText.setString(""+(this.gameLayer.level+1));
- this.scoreText.setString(""+this.gameLayer.score);
- this.stepText.setString(""+(this.gameLayer.limitStep - this.gameLayer.steps));
- }
GameLayer核心代码:
- //在新建GameUI的时候把自己传递进来,重点是this。
- this.ui = new GameUI(this);
- this.addChild(this.ui,3);
这样就可以实现实时更新标签。其实这种方式不光可以传递像标签这样的,也可以是Sprite等参数。效果图: