读书人

6、CCLayer

发布时间: 2013-02-25 10:23:36 作者: rapoo

六、CCLayer

一个游戏中可以有很多个场景,每个场景里面又可能包含有多个图层,这里的图层一般就是CCLayer对象。CCLayer本身几乎没什么功能,对比CCNode,CCLayer可用于接收触摸和加速计输入。其实,cocos2d对图层并没有严格的要求,图层不一定要使用CCLayer类,它也可以是一个简单的CCNode,为什么呢?我们新建一个图层不就是为了能够容纳更多的子节点么,CCNode也可以添加子节点啊。所以,如果你的图层不需要接收触摸和加速计输入,就尽量使用CCNode表示图层,CCLayer因为能够接收触摸和加速计输入会增加不必要的开销。移动、缩放、旋转整个图层,图层上的所有节点也会跟着一起移动、缩放、旋转。


常用设置
1.接收触摸输入

CCLayer默认情况是不接收触摸输入的,需要显示地设置isTouchEnabled为YES

接下来是在图层中接收触摸输入


CCLayerGradient

CCLayerGradient是CCLayerColor的子类,可以给图层设置渐变色


CCLayerMultiplex

CCLayerMultiplex继承自CCLayer,称为"多重图层"。它可以包含多个CCLayer对象,但在任意时刻只可以有一个CCLayer处于活动状态,用switchTo:和switchToAndReleaseMe:方法可以让某个图层处于活动状态,区别在于switchToAndReleaseMe:方法会先释放当前处于活动状态的图层,再让参数中要求的图层处于活动状态

// 创建2个图层CCLayer *layer1 = [CCLayer node];CCLayer *layer2 = [CCLayer node];// 创建一个多重图层,包含了layer1和layer2CCLayerMultiplex *plex = [CCLayerMultiplex layerWithLayers:layer1, layer2, nil];// 让layer1处于活动状态(layer2还在内存中)[plex switchTo:0];// 让layer2处于活动状态(layer1还在内存中)[plex switchTo:1];// 释放当前处于活动状态的layer2(layer2从内存中移除),然后让layer1处于活动状态[plex switchToAndReleaseMe:0]; 

图层之间的切换是没有过渡效果的



读书人网 >移动开发

热点推荐