遊戲世界多姿多彩,不管多靚麗的遊戲,多耐玩的遊戲,在與遊戲用戶交互上的每每是菜單。 上一章咱們已經大概瞭解了導演、節點、層、精靈。這一章以菜單爲主題。函數
菜單(Menu)包含如下內容:this
1.精靈菜單項(MenuItemSprite)spa
2.圖片菜單項(MenuItemImage)code
3.文字菜單項(MenuItemFont)orm
4.標籤菜單項(MenuItemLabel)blog
4.開關菜單項(MenuItemToggle)繼承
菜單的繼承關係:遊戲
這裏圖片菜單項也是一樣繼承於精靈菜單下。圖片菜單項也可稱爲精靈菜單 。文字菜單項繼承於標籤菜單項下。總的來講菜單被分爲三大類。圖片
具體實現案例:get
1 #include "HelloWorldScene.h" 2 USING_NS_CC; 3 4 Scene* HelloWorld::createScene() 5 { 6 auto scene = Scene::create(); 7 8 auto layer = HelloWorld::create(); 9 10 scene->addChild(layer); 11 12 return scene; 13 } 14 15 // on "init" you need to initialize your instance 16 bool HelloWorld::init() 17 { 18 ////////////////////////////// 19 // 1. super init first 20 if ( !Layer::init() ) 21 { 22 return false; 23 } 24 25 //從導演單例中獲取屏幕大小 26 Size visibleSize = Director::getInstance()->getVisibleSize(); 27 28 //----------------------------------------------------------------------- 29 //精靈菜單 30 31 auto Spr =Sprite::create("CloseNormal.png"); //建立精靈 32 33 auto pStartItem =MenuItemSprite::create(Spr,Spr,CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); 34 35 pStartItem->setPosition(100,100); 36 37 38 39 //----------------------------------------------------------------------- 40 //圖片菜單 41 42 MenuItemImage* pCloseItem = MenuItemImage::create( 43 "CloseNormal.png", //正常圖片 44 "CloseSelected.png",//點擊圖片 45 CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));//點擊菜單執行的函數 46 pCloseItem->setPosition(200,100); 47 48 49 50 //----------------------------------------------------------------------- 51 //標籤菜單 52 53 auto label = Label::createWithSystemFont("I am Label Item.", "Arial", 30); //標籤 54 55 //標籤菜單 56 MenuItemLabel* pLabelItem = MenuItemLabel::create(label,CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); 57 58 pLabelItem->setPosition(400,100); 59 60 61 //----------------------------------------------------------------------- 62 //文字菜單 63 64 auto pFontItem =MenuItemFont::create("hello",CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); 65 66 pFontItem->setPosition(200,200); 67 68 69 //開關菜單 70 //MenuItemToggle 71 MenuItemToggle * pToggleMenu =MenuItemToggle::createWithCallback( 72 CC_CALLBACK_1(HelloWorld::menuCloseCallback,this), 73 MenuItemFont::create("On"), 74 MenuItemFont::create("Off"), 75 NULL); 76 pToggleMenu ->setPosition(200,300); 77 78 79 80 //----------------------------------------------------------------------- 81 //菜單 容納一切菜單子項 82 Menu* pMenu = Menu::create(pStartItem,pCloseItem, pLabelItem,pFontItem,pToggleMenu, NULL); 83 84 pMenu->setPosition(Vec2::ZERO);//位置定在原點 85 86 this->addChild(pMenu); 87 88 return true; 89 } 90 91 92 void HelloWorld::menuCloseCallback(Ref* pSender) 93 { 94 log("點擊我了"); 95 96 }
效果圖:
菜單類提供了不一樣幾種方法來排列菜單項,使用它們你能夠垂直排列你的菜單項,也能夠水平排列,一下簡單介紹這些方法的參數和用法:
1.使用void alignItemsVertically();和 void alignItemsVerticallyWithPadding(float padding);能夠使菜單項在垂直方向排列。其中padding參數爲每一個菜單項在垂直方向上的間距,若是沒有該參數,則以默認間距排列。
2.使用void alignItemsHorizontally();和void alignItemsHorizontallyWithPadding(float padding);能夠使菜單項在水平方向排列。其中padding參數爲每一個菜單項在水平方向上的間距,若是沒有該參數,則以默認間距排列。
Ok.關於Cocos2d菜單的分享就到此結束。下一章以Cocos2d的動做爲主要內容進行淺析