【CCLayer】图层类也是渲染框架中很重要的内容。场景用来划分游戏状态,图层通常来划分游戏的画面。
引擎中通过【CCLayer】提供了上述图层的功能,引擎中的图层对象包含三个功能:
· 接收用户操作,比如触屏,重力加速度计的信息。
· 作为游戏内容元素的容器,用于显示游戏画面,承载精灵类、字体文本等对象。
· 填充北京游戏游戏背景颜色。
通常添加图层的时候,开发者就可以设置图层顺序。因为图层顺序决定了渲染的次序以及交互信息传递的顺序,所以图层将通过由远到近的方式进行绘制。
由于Cocos2D-X是开源的,具体CCLayer类的内容,进入CCLayer.h中查看
/** createone layer */
static CCLayer *create(void);
virtual void onEnter();//进入图层时回调
virtual void onExit();//退出图层时回调
virtual void onEnterTransitionDidFinish();//场景转换之后,回调函数
// default implements are used to call script callback if exist,用户操作交互函数,单点触碰
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
// default implements are used to call script callback if exist,用户交互操作函数,多点触碰
virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent);
virtual void didAccelerate(CCAcceleration* pAccelerationValue) {CC_UNUSED_PARAM(pAccelerationValue);}
virtual void registerWithTouchDispatcher(void);//注册脚本触碰事件
/** Register script touch events handler*/
void registerScriptTouchHandler(int nHandler, bool bIsMultiTouches = false, int nPriority = INT_MIN, bool bSwallowsTouches = false);//设置触碰方式,优先级等
/** Unregister script touch events handler,注销脚本触碰事件 */
void unregisterScriptTouchHandler(void);
/** whether or not it will receiveTouch events.
You can enable /disable touch events with this property.
Only the touches ofthis node will be affected. This "method" is not propagated to it's children.
@since v0.8.1
*/
bool isTouchEnabled();//返回图层是否接受触碰操作
void setTouchEnabled(bool value);//设置图层是否接受触碰操作
/** whether or not it will receiveAccelerometer events
You can enable /disable accelerometer events with this property.
@since v0.8.1
*/
bool isAccelerometerEnabled();//返回层是否接受加速计的信息
void setAccelerometerEnabled(bool value);//设置图层是否接受加速剂的信息
/** whether or not it will receivekeypad events
You can enable /disable accelerometer events with this property.
it'snew in cocos2d-x
*/
bool isKeypadEnabled();//返回是否接受键盘按钮
void setKeypadEnabled(bool value);//设置是否接受键盘按钮
· 为了合理的为游戏分层,引擎按照由息内容提供了一套特殊的图层类。比如处理菜单的【CCMenu】和初恋颜色显示的颜色层【CCColorLayer】等。下面列举3个CCLayer的子类,它们具有一些各自的特点。
· 【CClayerColor】颜色层
· 颜色层在游戏主要用来烘托背景,例如,暂停的时候,添加个半透明的颜色层来遮挡游戏内容。开发者可以通过RGB设置填充颜色,同时还可以设置图层的透明度,具体看CCLayerColor.h中的内容。
【CCMenu】菜单图层
这是一个一按钮对象为集合的UI图层,专门用于处理与玩家之间操作界面的交互。菜单图层中主要存放着许多【CCMenuItem】以及它的子类。CCMenuItem是引擎中各式各样的按钮父类。
【CCMultiplexLayer】复合层
就是他可以包含多个混合层,通常用来实现游戏的主画面,显示游戏所需要的元素,也就是精灵。同时还存在一些按钮,比如,暂停返回什么的。几乎所有游戏都会用到复合层。