1.CCMenu是由菜單項CCMenuItem (或其子類如CCMenuItemImage)組成的,通常先建立菜單項,然後使用1個或多個菜單項生成菜單
2.菜單項的位置是相對于菜單的偏移位置,預設情況下菜單的位置在螢幕中點,方向為x向右,y向上(跟主視窗方向一樣),菜單項預設偏移為(0,0),即不偏移
pMenu->setPosition( CCPointZero );
pCloseItem->setPosition(CCPointMake( s.width - 30, s.height - 30));
上述代碼把菜單原點設定在(0,0),即螢幕原點,菜單項相對菜單偏移到螢幕右上角向下30,向左30
3.CCMenuItem三個子類:
CCMenuItemImage:圖檔按鈕菜單項,通過指定圖檔資源來建立菜單項
CCMenuItemLabel:文本菜按鈕單項,通過指定文本标簽(實作CCLabelProtocol接口的類,如CCLabelTTF)來建立菜單項
CCMenuItemToggle :開關按鈕菜單項,這種類型的按鈕一次隻有一個菜單項顯示出來,當你單擊它的時候,它就會切換到另外一個菜單項,它的create函數:
CCMenuItemToggle * CCMenuItemToggle::create(CCObject* target, SEL_MenuHandler selector, CCMenuItem* item, ...)
CCMenuItemFont:文本菜按鈕單項,直接指定文本标簽
pMenuItem->setZOrder(int zorder)來制定菜單選項的ZOrder
可見它是可以加入多個菜單項的,這些菜單項按順序在上一個菜單項點選後出現下一個菜單項
典型的應用場景是播放器的播放/暫停按鈕
它跟CCMenuItemImage不一樣,CCMenuItemImage隻能指定兩者圖檔,并且不是點選後變成另一張,而是按下的時候變一下而已
4.CCMenuItem的點選響應回調函數一般是一個CCMenu的所有菜單項共用的,在回調函數裡面可以得到點選的是哪個菜單項(可以把每個菜單項的ZOrder設成不一樣,然後在回調函數裡判斷目前點選菜單項的ZOrder值)
void HelloWorld::menuCallback(CCObject * pSender)
{
CCLog("cocos2dx::%s","menuCallback");
CCMenuItem* pMenuItem = (CCMenuItem *)(pSender);
int nIdx = pMenuItem->getZOrder() - 10000;
CCLog("cocos2dx::The select index is %d",nIdx);
}