利用 LayerMultiplex 制作选项卡。
效果如下:

LayerMultiplex
MultipleLayer是一种图层类,继承自Layer,它支持多路复用孩子节点。
特点:作用:
- 它支持一个或多个孩子节点
- 同时只有一个孩子节点会被激活
- 用于管理Layer的切换,而不用切换场景
部分代码如下:
bool TabControl::init()
{
if ( !Layer::init() )
{
return false;
}
Size sz = Director::getInstance()->getVisibleSize();
/* 创建3个层 */
LayerColor * w = LayerColor::create(Color4B(, , , ));
LayerColor * g = LayerColor::create(Color4B(, , , ));
LayerColor * b = LayerColor::create(Color4B(, , , ));
m_multilayer = LayerMultiplex::create(w, g, b, nullptr);
this->addChild(m_multilayer);
//三个选项卡
MenuItemImage * itemImage1 = MenuItemImage::create("w_b.png",
"w_b.png", CC_CALLBACK_1(TabControl::menuCallback, this));
itemImage2->setTag();
MenuItemImage * itemImage2 = MenuItemImage::create("r_b.png",
"r_b.png", CC_CALLBACK_1(TabControl::menuCallback, this));
itemImage2->setTag();
MenuItemImage * itemImage3 = MenuItemImage::create("g_b.png",
"g_b.png", CC_CALLBACK_1(TabControl::menuCallback, this));
itemImage3->setTag();
Menu * menu = Menu::create(itemImage1, itemImage2, itemImage3, nullptr);
menu->alignItemsHorizontallyWithPadding(-);
menu->setPosition(sz.width / , );
this->addChild(menu, );
return true;
}
void TabControl::menuCallback(Ref * pSender)
{
int item = ((MenuItemImage*)pSender)->getTag();
if (item != m_curLayerTag)
{
m_multilayer->switchTo(item);
m_curLayerTag = item;
}
}