[html] view plaincopyhtml
static MenuItemToggle*createWithCallback ( 函數
const ccMenuCallback & callback, //菜單操做的回調函數指針 this
MenuItem * item, //進行切換的菜單項 spa
... .net
) 設計
從第二個參數開始都是MenuItem類的實例對象,它們是開關菜單顯示的菜單項,它們能夠是文本、圖片和精靈類型的菜單項,可是最後不用忘記NULL結尾。指針
下面代碼是簡單形式的文本類型的開關菜單:code
[html] view plaincopyorm
auto toggleMenuItem =MenuItemToggle::createWithCallback( htm
CC_CALLBACK_1(HelloWorld::menuItem1Callback,this),
MenuItemFont::create("On" ),
MenuItemFont::create("Off"),
NULL );
Menu* mn = Menu::create(toggleMenuItem,NULL);
this->addChild(mn);
下面咱們經過一個實例介紹一下其它的複雜類型的開關菜單的使用,這個實例以下圖所示,是一個遊戲音效和背景音樂設置界面,咱們能夠經過開關菜單實現這個功能,咱們的美術設計師爲每個設置項目(音效和背景音樂)分別準備了兩個圖片。
下面咱們看看實例代碼的實現,HelloWorldScene.cpp中使用MenuItemSprite菜單項的代碼以下:
[html] view plaincopy
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin();
Sprite *bg = Sprite::create("menu/background.png");
bg->setPosition(Point(origin.x + visibleSize.width/2,
origin.y +visibleSize.height /2));
this->addChild(bg);
//音效
auto soundOnMenuItem = MenuItemImage::create(
"menu/on.png",
"menu/on.png"); ①
auto soundOffMenuItem = MenuItemImage::create(
"menu/off.png",
"menu/off.png"); ②
auto soundToggleMenuItem = MenuItemToggle::createWithCallback(
CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this),
soundOnMenuItem,
soundOffMenuItem,
NULL); ③
soundToggleMenuItem->setPosition(
Director::getInstance()->convertToGL(Point(818,220)));
//音樂
auto musicOnMenuItem =MenuItemImage::create(
"menu/on.png",
"menu/on.png"); ④
automusicOffMenuItem =MenuItemImage::create(
"menu/off.png",
"menu/off.png"); ⑤
auto musicToggleMenuItem = MenuItemToggle::createWithCallback(
CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this),
musicOnMenuItem,
musicOffMenuItem,
NULL ); ⑥
musicToggleMenuItem->setPosition(
Director::getInstance()->convertToGL(Point(818,362)));
//Ok按鈕
autookMenuItem = MenuItemImage::create(
"menu/ok-down.png",
"menu/ok-up.png");
okMenuItem->setPosition(Director::getInstance()->convertToGL(Point(600,510)));
Menu* mn = Menu::create(soundToggleMenuItem,
musicToggleMenuItem,okMenuItem, NULL); ⑦
mn->setPosition(Point::ZERO);
this->addChild(mn);
return true;
}
在上面代碼第①是建立音效開的圖片菜單項,第②行是建立音效關的圖片菜單項,第③行代碼是經過createWithCallback函數建立開關菜單項MenuItemToggle。相似的第④~⑥建立了背景音樂開關菜單項。第⑦行代碼是經過上面建立的開關菜單項建立Menu對象。