【Cocos2d入门教程四】Cocos2d-x菜单篇 – 蔡明勇

游戏世界多姿多彩,无论多靓丽的游戏,多耐玩的游戏,在与游戏用户交互上的往往是菜单。 上一章我们已经大概了解了导演、节点、层、精灵。这一章以菜单为主题。

菜单(Menu)包含以下内容:

1.精灵菜单项(MenuItemSprite)

2.图片菜单项(MenuItemImage)

3.文字菜单项(MenuItemFont)

4.标签菜单项(MenuItemLabel)

4.开关菜单项(MenuItemToggle)

菜单的继承关系:


这里图片菜单项也是同样继承于精灵菜单下。图片菜单项也可称为精灵菜单 。文字菜单项继承于标签菜单项下。总的来说菜单被分为三大类。

具体实现案例:

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的动作为主要内容进行浅析

 

本文链接:【Cocos2d入门教程四】Cocos2d-x菜单篇,转载请注明。



You must enable javascript to see captcha here!

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress

无觅相关文章插件,快速提升流量