按层管理所有物体
层更符合我们对世界的认识,就好像百货大厦,每一层销售的商品种类都不一样。相对应的在一个典型游戏中,往往会包含一些层 :背景层、人物层、道具层等等。背景层是固定的图片或者地图,人物层中主角和各种小怪可以不断移动,两层之间互不干扰,各自管理层内的子节点。层继承节点的特性,可以在层中继续嵌套子层。 例如人物层中又可以继续拆分为主角层,NPC层。
使用层的方式很简单,首先新建一层 :
var layer = new cc.Layer();
在把层添加到场景 :
scene.addChild(layer);
再把子节点添加到这个层上 :
layer.addChild(child);
cc.LayerMultiplex
cc.LayerMultiplex的作用是切换各个层,也就是tab切换。如下图 :
上图中,最上面有 : 作物、道具、宠物和装饰。但我们点击按钮时,就会跳到对应的界面。这个就是cc.LayerMultiplex的作用。使用方法也很简单, 如下 :
//新建3个层
var layer_1 = new Layer_1();
var layer_2 = new Layer_2();
var layer_3 = new Layer_3();
//创建LayerMultiplex,并把层添加到LayerMultiplex中(先添加进去的层先显示)
var lmx = new cc.LayerMultiplex(layer_1,layer_2,layer_3);
this.addChild(lmx);
lmx.switchTo(1); //若想显示layer_2层, 则使用该函数。(参数中的0代表layer_1, 1代表layer_2, 2代表layer_3)
cc.LayerColor(纯色背景层)
使用cc.LayerColor可以很方便的实现纯色背景。代码如下 :
var layer = new cc.LayerColor(cc.color(255,0,0), 800, 1280);
这样就创建了一个纯红色宽800,高1280像素的背景。其中,cc.color是一个全局函数,接受0到255的R、G、B三通道的值,从而产生一个颜色值。
后面的800和1280是层的宽和高。如果不设置宽和高,层将默认为全屏大小。
cc.LayerGradient(颜色渐变层)
使用cc.LayerGradient可以实现一个颜色渐变到另外一个颜色的效果。代码如下 :
var layerGradient = cc.LayerGradient.create();
layerGradient.setStartColor( cc.color(255,0,0) ); //设置开始颜色
layerGradient.setEndColor( cc.color(0,255,0) ); //设置结束颜色
layerGradient.setVector(cc.p(0,0)); //设置渐变方向
layerGradient.setStartOpacity(0); //设置开始透明度
layerGradient.setEndOpacity(255); //设置结束透明度
layerGradient.setContentSize(cc.size(800, 1280)); //设置大小
this.addChild(layerGradient);
效果如下 :
其中渐变方向可以参考以下数值 :
//0,0 : 上面 渐变到 下面
//0, 1 : 下面 渐变到 上面
//1,0 : 左边 渐变到 右边
//-1,0 : 右边 渐变到 左边
//1,1 : 左下 渐变到 右上
//-1,-1: 右上 渐变到 左下
//1,-1 : 左上 渐变到 右下
//-1,1 : 右下 渐变到 左上