添加场景
在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