利用 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;
}
}