【Cocos2d入門教程四】Cocos2d-x菜單篇

遊戲世界多姿多彩,不管多靚麗的遊戲,多耐玩的遊戲,在與遊戲用戶交互上的每每是菜單。 上一章咱們已經大概瞭解了導演、節點、層、精靈。這一章以菜單爲主題。函數

菜單(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 }

 

效果圖:


菜單(Menu)類經常使用方法簡介

菜單類提供了不一樣幾種方法來排列菜單項,使用它們你能夠垂直排列你的菜單項,也能夠水平排列,一下簡單介紹這些方法的參數和用法:

1.使用void alignItemsVertically();和 void alignItemsVerticallyWithPadding(float padding);能夠使菜單項在垂直方向排列。其中padding參數爲每一個菜單項在垂直方向上的間距,若是沒有該參數,則以默認間距排列。

2.使用void alignItemsHorizontally();和void alignItemsHorizontallyWithPadding(float padding);能夠使菜單項在水平方向排列。其中padding參數爲每一個菜單項在水平方向上的間距,若是沒有該參數,則以默認間距排列。


Ok.關於Cocos2d菜單的分享就到此結束。下一章以Cocos2d的動做爲主要內容進行淺析

相關文章
相關標籤/搜索