CCLayer继承自CCNode,并且在此基础上实现触屏事件代理。
CCLayer的常用子类
类名 | 功能 |
CCLayerColor | 可设置层的颜色和不透明度 |
CCLayerMultiplex | 可以将它和子布景层结合在一起 |
CCMenu | 菜单布景层 |
CCScrollView | 支持Cocos2D-iPhone的滚动视图 |
CControl | UI控件 |
CCSpacer | 获得水平或垂直的空间 |
CCMenuPassive | 这个布景层布发送消息,每个节点做自己的事 |
CCLayer类的函数
函数名 | 返回类型 | 描述 |
init | 布尔型 | 初始化CCLayer |
onEnter | 空 | 当进入布景层时被调用 |
onExit | 空 | 当离开布景层时被调用 |
onEnterTransitionDidFinsh | 空 | 过场动画结束时被调用 |
ccTouchBegan | 布尔型 | 触屏触摸屏幕 |
ccTouchMoved | 空 | 触屏移动 |
ccTouchEnded | 空 | 触屏结束 |
ccTouchCancelled | 空 | 触屏取消 |
ccTouchesBegan | 空 | 触屏触摸屏幕(多点触摸) |
ccTouchesMoved | 空 | 触屏移动(多点触摸) |
ccTouchedEnded | 空 | 触屏结束(多点触摸) |
didAccelerate | 空 | 加速度传感器 |
registerWithTouchDispatcher | 空 | 如果触屏允许,这个方法在init里调用 |
isTouchEnabled | 布尔型 | 获得是否触屏 |
setTouchEnabled | 空 | 设置触屏 |
isAccelerometerEnable | 布尔型 | 是否获得加速度传感器 |
setAccelerometerEnable | 空 | 设置获得加速传感器 |
isKeypadEnable | 布尔型 | 是否获得键盘事件 |
setKeypadEnable | 空 | 设置获得键盘事件 |
void layerTest1::onEnter() { LayerTest::onEnter(); setTouchEnable(true); CCSize s=CCDirecotor::sharedDirector-->getWinSize(); CCLaterColor* layer=CCLayerColor::create(ccc4(0xFF,0x00,0x00,0x80),200,200); layer->ignoreAnchorPointForPosittion(false); layer->setPosition(CCPointMake(s.width/2,s.height/2)); addChild(layer,1,kTagLayer); }
修改布景层大小: void LayerTest1::updateSize(CCPoint &touchLocation) { CCSize s=CCDirector::shareDirector->getWinSize(); CCSize newSize=CCSizeMake(fabs(touchLocation.x-s.width/2)*2,fabs(touchLocation.y-s.height/2)*2; CCLayerColor* l = (CCLayerColor*) getChildByTag(kTagLayer); l.setContentSize(newSize); }
void MenuTestScene::runThisTest() { CCLayer* pLayer1=new MenuLayerMainMenu(); CCLayer* pLayer2=new MenuLayer2(); CCLayer* pLayer3=new MenuLayer3(); CCLayer* pLayer4=new MenuLayer4(); CCLayer* pLayer5=new MenuLayerPriorityTest(); CCLayerMultiplex* layper= CCLayerMultiplex::create(pLayer1,pLayer2,pLayer3,pLayer4,pLayer5,NULL); addChild(layer,0); //释放指针 pLayer1->release(); pLayer2->release(); pLayer3->release(); pLayer4->release(); pLayer5->release(); CCDirector::shardDirector()->replaceScene(this); }
void MenuLayerPriorityTest::menuCallback(CCObject* pSender) { ((CCLayerMultiplex*)m_pParent)->switchTo(0); }