布景对应CCLayer类(层)。每个场景中可以有很多层,每层负责各自的任务,如专门显示背景地图,专门显示道具,专门负责显示人物等等。层上可以放置不同的元素,文本、精灵、菜单等。
通过层,就可以让游戏展示出各种界面。当然,很多层都设置为透明或半透明。
CCLayer类多继承自CCNode、CCAccelerometerDelegate、CCTouchDelegate、CCKeypadDelegate四个类。
static CCLayer *create(void); /** 创建CCLayer对象*/
virtual void onEnter(); /** 继承CCNode的方法*/
virtual void onExit(); /** 继承CCNode的方法*/
virtual void onEnterTransitionDidFinish(); /** 继承CCNode的方法*/
// 触屏事件默认操作,用来调用回调函数
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);
// 触屏事件默认操作,用来调用回调函数
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); /** 如果isTouchEnabled为真,onEnter调用本方法。通过重载来改变CCLayer接收触屏事件的方式。 ( Default: CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this,0); )
例子:
void CCLayer::registerWithTouchDispatcher()
{
CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,INT_MIN+1,true);
}
*/
void registerScriptTouchHandler(int nHandler, bool bIsMultiTouches = false, int nPriority = INT_MIN, bool bSwallowsTouches = false); /** 注册触屏事件脚本处理函数 */
void unregisterScriptTouchHandler(void); /** 取消注册脚本*/
bool isTouchEnabled(); /** 是否接收触屏事件*/
void setTouchEnabled(bool value); /** 设置是否接收触屏事件*/
bool isAccelerometerEnabled(); /** 是否接收加速事件?*/
void setAccelerometerEnabled(bool value); /** 设置是否接收加速事件?*/
bool isKeypadEnabled(); /** 是否接收键盘事件*/
void setKeypadEnabled(bool value); /** 设置是否接收键盘事件*/