Cocos2dx 学习笔记29 CCLayerMultiplex管理多个层

Cocos2dx 学习笔记29 CCLayerMultiplex管理多个层,第1张

概述CCLayerMultiplex继承自CCLayer,它可以管理多个层,并实现不同层间的切换,但是同一时间只能有一个层是激活状态,其他都是不可见的 以下为CCLayerMultiplex的用途,网上有用来做TabBar的,官方的TestCpp中用在MenuTest例子中。 (1)CCLayerMultiplex实现Tab选项卡 原创作品,转载请标明:http://www.voidcn.com/ar

CCLayerMultiplex继承自cclayer,它可以管理多个层,并实现不同层间的切换,但是同一时间只能有一个层是激活状态,其他都是不可见的

以下为cclayerMultiplex的用途,网上有用来做Tabbar的,官方的TestCpp中用在MenuTest例子中。

(1)CCLayerMultiplex实现Tab选项卡

原创作品,转载请标明:http://www.jb51.cc/article/p-hrezrsqi-ep.html


有时候,我们希望实现一个选项卡功能,就是切换tab选项,场景中的内容会跟着改变,但是tab选项卡不动。这是用切换场景的方式没办法做到的。

这里我们就可以使用cclayerMultiplex来实现这个功能。


1.创建布景

这里创建3个布景来做示范。分别是Laye1,Layer2和Layer3。代码就不贴了,布景内容可以直接使用HelloWorld的代码。


2.创建主场景

主场景的初始化函数如下:

[cpp] view plain copy boolCCMainScene::init() { boolbRet=false; do { CC_BREAK_IF(!CCScene::init()); _layer1=cclayer1::create();//创建3个层的实例 _layer2=cclayer2::create(); _layer3=cclayer3::create(); _layerMuticomplex=cclayerMultiplex::create(_layer1,_layer2,_layer3,NulL);//创建多层布景层 this->addChild(_layerMuticomplex);//添加到场景,默认显示第一个布景 CCSizevisibleSize=CCDirector::sharedDirector()->getVisibleSize(); CCPointorigin=CCDirector::sharedDirector()->getVisibleOrigin(); CcmenuItemImage*pCloseItem1=CcmenuItemImage::create(//创建3个tab菜单,用于切换布景 "w_b.png", "w_b.png", this,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> menu_selector(CCMainScene::menuCallback)); CcmenuItemImage*pCloseItem2=CcmenuItemImage::create( "r_b.png",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> "r_b.png",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> CcmenuItemImage*pCloseItem3=CcmenuItemImage::create( "g_b.png",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> "g_b.png",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> //createmenu,it'sanautoreleaSEObject pCloseItem1->setTag(0);//给tab按钮设置tag,方便回调函数中的获取 pCloseItem2->setTag(1); pCloseItem3->setTag(2); Ccmenu*pMenu=Ccmenu::create(pCloseItem1,pCloseItem2,pCloseItem3,0); background-color:inherit">//创建菜单 pMenu->alignItemsHorizontallyWithpadding(-1);//设置菜单项间隔 pMenu->setposition(visibleSize.wIDth/2,25); this->addChild(pMenu,1);//注意哦,菜单要在场景中添加而不是在布景中了!而且z轴要高于多层布景,保证可见。 bRet=true; }while(0); returnbRet; }
回调函数如下:

copy voID
CCMainScene::menuCallback(CCObject*pSender)
int
item=((CcmenuItemImage*)pSender)->getTag();//获取选择项
if(item!=curLayerPos) _layerMuticomplex->switchTo(item);//切换布景,如果使用switchToAndReleaseMe会释放掉当前布景 curLayerPos=item; } }
3.效果

为了让效果明显一点,我让3个布景稍微有点区别。当然菜单是可以做normal,pressed,disable三态的,这里略去。点击不同的选项卡就可以切换到不同的布景层。当然cclayerMultiplex还可以嵌套使用。




4.源码下载地址

http://download.csdn.net/detail/jackyvincefu/6421801


(2)TestCpp官方例子

[cpp] view plain copy cclayer*mainLayer=newMenuDemo; cclayer*menu1=newMenuDemoItem1; cclayer*menu2=newMenuDemoItem2; cclayer*menu3=newMenuDemoItem3; cclayerMultiplex*Menu_multiplex=cclayerMultiplex::create(mainLayer,menu1,menu2,menu3,NulL); addChild(Menu_multiplex,0); mainLayer->release(); menu1->release(); menu2->release(); menu3->release(); @H_510_502@ CCDirector::sharedDirector()->replaceScene(this);
首先在你的scene中创建这个 cclayerMultiplex,不要调换了代码顺序哦!


然后写回调函数了:

voIDMenuDemo::FontMenu1_callBack(CCObject*object){ ((cclayerMultiplex*)(m_pParent))->switchTo(2); } voIDMenuDemo::FontMenu2_callBack(CCObject*object){ ((cclayerMultiplex*)(m_pParent))->switchTo(3); voIDMenuDemo::FontMenu3_callBack(CCObject*object){ ((cclayerMultiplex*)(m_pParent))->switchTo(1); } 总结

以上是内存溢出为你收集整理的Cocos2dx 学习笔记29 CCLayerMultiplex管理多个层全部内容,希望文章能够帮你解决Cocos2dx 学习笔记29 CCLayerMultiplex管理多个层所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1009690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存