[入门教程]使用Cocos2d-html5游戏引擎编写一个简单的游戏 第四回合:添加场景

添加场景

  在main.js代码的最后,我们发现程序实例化了一个cocos2dApp对象,传入了一个场景。哈?我们又见到“场景”这个词了,那场景到底是什么意思呢?我们可以把它理解成电影中的场景,更具体点来说,在游戏中是一个容器。例如:游戏从菜单界面进入到游戏界面,就是切换了一个场景。

  好,那么传入的场景从哪里来呢。打开源码文件夹src,可以看到这个myApp.js,打开它。

  先看代码的最下面,定义了一个继承了cc.Scene的对象MyScene。这个cc.Scene就是引擎中的场景类。是不是就流程就串联起来了?MyScene对象重写了onEnter()方法,这是个回调方法,在进入场景时调用。光有场景是不行的,就像光有容器里面没装东西,我们什么都看不到。我们需要加入一个或多个Layer,我们称它为层。层是一个比Layer小得容器。他们在z坐标上层层叠加,游戏中,通常有背景层,菜单层等等。

  我们重写MyLayer,让他作为背景层。将MyLayer从继承cc.Layer改为继承cc.LayerColor。cc.LayerColor是cc.Layer的子类,多个一个设置颜色的方法,我们可以使用这个类制作有颜色的游戏背景。将HelloWorld界面的元素删除。最终代码如下:
var MyLayer = cc.LayerColor.extend({
    init:function () {
        // 1. super init first
        // 必须调用父类init()方法,很多bug都是由于没有调用父类init()方法造成的
        this._super();
        // 设置Layer的背景
        this.setColor(cc.c4(126,126,126,126));
    }
});

var MyScene = cc.Scene.extend({
    onEnter:function () {
        this._super();
        var layer = new MyLayer();
        this.addChild(layer);
        layer.init();
    }
});

```


      使用运行HelloWorld的方法就能看到效果了。 
   

      另外,我们可以使用Chrome的开发者工具调试程序:点击红框中的菜单->工具->开发者工具。


上一篇:http://www.cocoachina.com/bbs/read.php?tid=187990 
下一篇:http://www.cocoachina.com/bbs/read.php?tid=187994

楼主辛苦了,最好建立一个索引贴。

— Begin quote from ____

我们重写MyLayer,让他作为背景层。将MyLayer从继承cc.Layer改为继承cc.LayerColor。cc.LayerColor是cc.Layer的子类,多个一个设置颜色的方法,我们可以使用这个类制作有颜色的游戏背景。将HelloWorld界面的元素删除。

— End quote

多个一个

为什么我的 灰色背景出不来?

是不是MyLayer继承了Layer ?

this.setColor(cc.c4(126,126,126,126));

这句在JSv3.6.1里面应该写成

this.setColor(cc.color(126,126,126,126));

不行。我也出不来。。差