从零开始学Cocos2DX 布景层类CCLayer

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 设置获得键盘事件


颜色布景层CCLayerColor
CCLayerColor包含两个扩展功能:可以为布景层增加颜色,以及设置不透明度。
首先看如何它如何定义初始化:
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);
}


多层布景层类CCLayerMultiplex
通常在开发中游戏绘制分为2个部分:游戏本身的界面和用户界面,因此界面就会被分为多个层,
有时不需要使用场景切换,只需要切换场景就能实现的功能能,CClayerMuitiplex就能满足我们的需求。
初始化代码清单:
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);

}

switchTo函数切换场景
void MenuLayerPriorityTest::menuCallback(CCObject* pSender)
{
  ((CCLayerMultiplex*)m_pParent)->switchTo(0);
}





你可能感兴趣的:(从零开始学Cocos2DX 布景层类CCLayer)