布景层类CCLayer 是CCNode 类的子类, 并且在此基础上实现触屏事件代理(TouchEventsDelegate)协议,可以实现CCNode 类的功能,并且可以处理输入,包括触屏和加速度传感器。每个游戏场景中可以有很多层,每一层负责各自的任务,如专门负责显示地图的背景、专门负责显示敌人、专门负责机关和专门负责主角等;每一层上可以放置不同的元素,包括文本、精灵图片和菜单等。通过层与层之间的组合关系,就可以构成游戏显示的界面UI,游戏中等。当然为了看到每一层的东西,可把一些层设置为透明或半透明的,这样就可以看到不同布景层叠加到一起的效果了。CCLayer类的继承关系如下:(CCLayer 类继承自CCNode 类,并且CCLayer 类还遵照触屏代理协议、加速度传感器代理协议、键盘时间代理协议等协议。)
CCLayer-->CCNode、CCTouchDelegate、CCAcceleromelerDelegate、CCKeypadDelegate。
成员函数如下:
init:初始化CCLayer。
onEnter:当进入布景层时被调用。
onExit:当离开布景层时被调用。
onEnterTransitionDidFinish:过场动画结束时调用。
ccTouchBegan:触屏触摸屏幕。
ccTouchMoved:触屏移动。
ccTouchEnded:触屏结束。
ccTouchCancelled:触屏取消。
ccTouchesBegan:触屏触摸屏幕(多点触控)。
ccTouchesMoved:触屏移动(多点触控)。
ccTouchesEnded:触屏结束(多点触控)。
ccTouchesCancelled:触屏取消(多点触控)。
didAccelerate:加速度传感器。
registerWithTouchDispatcher:如果触屏被允许,这个方法在init 里调用。
isTouchEnabled:获得是否触屏。
setTouchEnabled:设置触屏。
isAccelerometerEnabled:是否获得加速度传感器。
setAccelerometerEnabled:设置获得加速度传感器。
isKeypadEnabled:是否获得键盘事件。
setKeypadEnabled:设置获得键盘事件。
1、定义布景层并把它加入到场景中
1 // 创建场景
2 CCScene *scene = CCScene::create();
3
4 // 创建布景层
5 HelloWorld *layer = HelloWorld::create();
6
7 // 把布景层加入到场景中
8 scene->addChild(layer);
2、CCLayer中的init函数在创建布景层时被调用,在init 函数中定义要显示的对象并把它作为子类加入场景中。
1 bool HelloWorld::init()
2 {
3 if ( !CCLayer::init() )
4 {
5 return false;
6 }
7
8 //定义要显示的对象并把它们添加到场景中
9
10 return true;
11 }
好了,布景层就先介绍到这里了,布景层类有很多种子类,比如:CCLayerColor(实现 CCRGBAProtocol 协议,可设置层的颜色和不透明度)、CCLayerMultiplex(可以将它和子布景层结合在一起)、CCMenu(菜单布景层)、CCControl(UI 控件)、CCScrollView(支持Cocos2D-iPhone 的滚动视图)等。下面就会分别对这些比较重要的子类进行介绍和对其的使用方法。