你的位置:首页 > 操作系统

[操作系统]【Cocos2d入门教程四】Cocos2d


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

菜单(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 instance16 bool HelloWorld::init()17 {18   //////////////////////////////19   // 1. super init first20   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   //MenuItemToggle71   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的动作为主要内容进行浅析