[Cocos2d-x For WP8]Menu菜单
生活随笔
收集整理的這篇文章主要介紹了
[Cocos2d-x For WP8]Menu菜单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 菜單欄這是游戲里面基本的控件來的,
頭文件:
#include <CCMenu.h>???????????????????????繼承關系圖:
頭文件:
#include <CCMenuItem.h>???????????????????????繼承關系圖:
?? ????????????????????????1 CCMenuItemLable
包括CCMenuItemAtlasFont和CCMenuItemFont是兩種定義菜單項字體的方式,其中CCMenuItemFont是通過設定字體名稱來設置字體,這個字體是系統自帶的。CCMenuItemAtlasFont則是通過字體配置文件png文件,即配置文件所對應的圖片。
2.CCMenuItemSprite 這個菜單項的特點就是可以封裝圖片進入菜單項
3.CCMenuItemToggle 可以將任意的CCMenuItem封裝進去,作為一個按鈕式的開關
示例代碼:
CCScene* HelloWorld::scene() {CCScene * scene = NULL;do { // 'scene'是一個可以自動釋放的對象scene = CCScene::create();//創建失敗跳出循環CC_BREAK_IF(! scene);MenuLayer1 *layer = new MenuLayer1();scene->addChild(layer);} while (0);// 返回scenereturn scene; }MenuLayer1::MenuLayer1() {//設置默認字體的大小CCMenuItemFont::setFontSize( 30 );//設置默認字體的名字CCMenuItemFont::setFontName("Courier New");// Font Item// 創建三個精靈作為字體的三個狀態CCSprite* spriteNormal = CCSprite::create("cat.png", CCRectMake(0,23*2,115,23));CCSprite* spriteSelected = CCSprite::create("cat.png", CCRectMake(0,23*1,115,23));CCSprite* spriteDisabled = CCSprite::create("cat.png", CCRectMake(0,23*0,115,23));//dynamic_cast<CCNode*>(mgr)->addChild(spriteNormal);//dynamic_cast<CCNode*>(mgr)->addChild(spriteSelected);//dynamic_cast<CCNode*>(mgr)->addChild(spriteDisabled);//創建一個精靈菜單CCMenuItemSprite* item1 = CCMenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, this, menu_selector(MenuLayer1::menuCallback) );//創建一個圖片的菜單欄項 Image ItemCCMenuItem* item2 = CCMenuItemImage::create("SendScoreButton.png", "SendScoreButtonPressed.png", this, menu_selector(MenuLayer1::menuCallback2) );//創建一個label Label Item (LabelAtlas)CCLabelAtlas* labelAtlas = CCLabelAtlas::create("0123456789", "fps_images.png", 16, 24, '.');//創建一個label菜單欄CCMenuItemLabel* item3 = CCMenuItemLabel::create(labelAtlas, this, menu_selector(MenuLayer1::menuCallbackDisabled) );item3->setDisabledColor( ccc3(32,32,64) );item3->setColor( ccc3(200,200,255) );//創建一個字體的菜單欄 Font ItemCCMenuItemFont *item4 = CCMenuItemFont::create("I toggle enable items", this, menu_selector(MenuLayer1::menuCallbackEnable) );item4->setFontSizeObj(20);item4->setFontName("Marker Felt");// Font ItemCCMenuItemFont* item5 = CCMenuItemFont::create("Quit", this, menu_selector(MenuLayer1::onQuit));//創建一個顏色變化的動作CCActionInterval* color_action = CCTintBy::create(0.5f, 0, -255, -255);//逆向動作CCActionInterval* color_back = color_action->reverse();//創建一個動作的組合CCFiniteTimeAction* seq = CCSequence::create(color_action, color_back, NULL);//重復地運行該動作item5->runAction(CCRepeatForever::create((CCActionInterval*)seq));//創建菜單欄CCMenu* menu = CCMenu::create( item1, item2, item3, item4, item5, NULL);//垂直布局menu->alignItemsVertically();//創建菜單欄的彈跳效果 elastic effect//獲取屏幕的大小CCSize s = CCDirector::sharedDirector()->getWinSize();int i=0;CCNode* child;CCArray * pArray = menu->getChildren();CCObject* pObject = NULL;//類似foreach循環 CCARRAY_FOREACH(pArray, pObject){if(pObject == NULL)break;//轉化為基類CCNodechild = (CCNode*)pObject;//獲取坐標,該坐標相對于左下角作為(0,0)參考點CCPoint dstPoint = child->getPosition();int offset = (int) (s.width/2 + 50);if( i % 2 == 0)offset = -offset;child->setPosition( CCPointMake( dstPoint.x + offset, dstPoint.y) );child->runAction( // 創建彈跳效果的動畫 CCEaseElasticOut::create(CCMoveBy::create(2, CCPointMake(dstPoint.x - offset,0)), 0.35f) );i++;}m_disabledItem = item3; item3->retain();//m_disabledItem->setIsEnabled( false ); addChild(menu);}void MenuLayer1::registerWithTouchDispatcher() {CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, cocos2d::kCCMenuHandlerPriority+1, true); }MenuLayer1::~MenuLayer1() {m_disabledItem->release(); }void MenuLayer1::menuCallback(CCObject* sender) {}void MenuLayer1::menuCallbackConfig(CCObject* sender) {}void MenuLayer1::allowTouches(ccTime dt) {CCDirector::sharedDirector()->getTouchDispatcher()->setPriority(cocos2d::kCCMenuHandlerPriority+1, this);unscheduleAllSelectors();CCLog("TOUCHES ALLOWED AGAIN"); }void MenuLayer1::menuCallbackDisabled(CCObject* sender) {// hijack all touch events for 5 secondsCCDirector::sharedDirector()->getTouchDispatcher()->setPriority(cocos2d::kCCMenuHandlerPriority-1, this);schedule(schedule_selector(MenuLayer1::allowTouches), 5.0f);CCLog("TOUCHES DISABLED FOR 5 SECONDS"); }void MenuLayer1::menuCallbackEnable(CCObject* sender) {m_disabledItem->setEnabled(! m_disabledItem->isEnabled() ); }void MenuLayer1::menuCallback2(CCObject* sender) {((CCLayerMultiplex*)m_pParent)->switchTo(2); }void MenuLayer1::onQuit(CCObject* sender) {//[[Director sharedDirector] end];//getCocosApp()->exit(); }運行的效果:
?
?
?
轉載于:https://www.cnblogs.com/linzheng/p/3279489.html
總結
以上是生活随笔為你收集整理的[Cocos2d-x For WP8]Menu菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU-1241
- 下一篇: poj 2914(stoer_wange