天天看點

cocos2d-x CCMenu菜單選項

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);

}