实例介绍Cocos2d-x开关菜单

开关菜单是MenuItemToggle类实现的,它是一种可以进行两种状态切换的菜单。它可以通过下面的函数创建:

[html] view plaincopy

  1. static MenuItemToggle*createWithCallback  (

  2. const ccMenuCallback &      callback,            //菜单操作的回调函数指针

  3. MenuItem *    item,                                          //进行切换的菜单项

  4. ...

  5. )

从第二个参数开始都是MenuItem类的实例对象,它们是开关菜单显示的菜单项,它们可以是文本、图片和精灵类型的菜单项,但是最后不用忘记NULL结尾。

下面代码是简单形式的文本类型的开关菜单:

[html] view plaincopy

  1. auto toggleMenuItem =MenuItemToggle::createWithCallback(

  2. CC_CALLBACK_1(HelloWorld::menuItem1Callback,this),

  3. MenuItemFont::create("On" ),

  4. MenuItemFont::create("Off"),

  5. NULL );

  6. Menu* mn = Menu::create(toggleMenuItem,NULL);

  7. this->addChild(mn);

下面我们通过一个实例介绍一下其它的复杂类型的开关菜单的使用,这个实例如下图所示,是一个游戏音效和背景音乐设置界面,我们可以通过开关菜单实现这个功能,我们的美术设计师为每一个设置项目(音效和背景音乐)分别准备了两个图片。

下面我们看看实例代码的实现,HelloWorldScene.cpp中使用MenuItemSprite菜单项的代码如下:

[html] view plaincopy

  1. bool HelloWorld::init()

  2. {

  3. if ( !Layer::init() )

  4. {

  5. return false;

  6. }
  7. Size visibleSize = Director::getInstance()->getVisibleSize();

  8. Point origin = Director::getInstance()->getVisibleOrigin();
  9. Sprite *bg = Sprite::create("menu/background.png");

  10. bg->setPosition(Point(origin.x + visibleSize.width/2,

  11. origin.y +visibleSize.height /2));

  12. this->addChild(bg);
  13. //音效

  14. auto soundOnMenuItem = MenuItemImage::create(

  15. "menu/on.png",

  16. "menu/on.png");                                                                        ①

  17. auto soundOffMenuItem = MenuItemImage::create(

  18. "menu/off.png",

  19. "menu/off.png");                                                                        ②
  20. auto soundToggleMenuItem = MenuItemToggle::createWithCallback(

  21. CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this),

  22. soundOnMenuItem,

  23. soundOffMenuItem,

  24. NULL);                                                            ③
  25. soundToggleMenuItem->setPosition(

  26. Director::getInstance()->convertToGL(Point(818,220)));
  27. //音乐

  28. auto musicOnMenuItem  =MenuItemImage::create(

  29. "menu/on.png",

  30. "menu/on.png");                                                                        ④

  31. automusicOffMenuItem  =MenuItemImage::create(

  32. "menu/off.png",

  33. "menu/off.png");                                                                        ⑤

  34. auto musicToggleMenuItem = MenuItemToggle::createWithCallback(

  35. CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this),

  36. musicOnMenuItem,

  37. musicOffMenuItem,

  38. NULL );                                        ⑥

  39. musicToggleMenuItem->setPosition(

  40. Director::getInstance()->convertToGL(Point(818,362)));
  41. //Ok按钮

  42. autookMenuItem  = MenuItemImage::create(

  43. "menu/ok-down.png",

  44. "menu/ok-up.png");

  45. okMenuItem->setPosition(Director::getInstance()->convertToGL(Point(600,510)));
  46. Menu* mn = Menu::create(soundToggleMenuItem,

  47. musicToggleMenuItem,okMenuItem, NULL);                                   ⑦
  48. mn->setPosition(Point::ZERO);

  49. this->addChild(mn);
  50. return true;

  51. }

在上面代码第①是创建音效开的图片菜单项,第②行是创建音效关的图片菜单项,第③行代码是通过createWithCallback函数创建开关菜单项MenuItemToggle。类似的第④~⑥创建了背景音乐开关菜单项。第⑦行代码是通过上面创建的开关菜单项创建Menu对象。

实例介绍Cocos2d-x开关菜单,布布扣,bubuko.com

时间: 2024-11-05 12:28:31

实例介绍Cocos2d-x开关菜单的相关文章

【转】Android实例剖析笔记(二)--用实例讲解Andriod的开发过程,以NotesList为实例介绍Android的菜单机制

原文网址:http://kb.cnblogs.com/page/78304/ 简介 android提供了三种菜单类型,分别为options menu,context menu,sub menu. options menu就是通过按home键来显示,context menu需要在view上按上2s后显示.这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单.options menu最多只能在屏幕最下面显示6个菜单选项,称为iconmenu,icon menu不能有checkable选项.多

Cocos2d-x开发实例介绍帧动画使用

以下我们通过一个实例介绍一下帧动画的使用.这个实比例如以下图所看到的,点击Gobutton開始播放动画,这时候播放button标题变为Stop,点击Stopbutton能够停止播放动画. 以下我们再看看详细的程序代码,首先看一下看HelloWorldScene.h文件,它的代码例如以下: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld

Cocos2d-x开发实例介绍特效演示

下面我们通过一个实例介绍几个特效的使用,这个实例下图所示,下图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜单场景. 下面我们再看看具体的程序代码,首先看一下看HelloWorldScene.h文件,它的代码如下: [html] view plaincopy #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "coc

Cocos2d-x中__Dictionary容器以及实例介绍

__Dictionary类在Cocos2d-x 2.x时代它就是CCDictionary类,它是模仿Objective-C中的NSDictionary类而设计的,通过引用计数管理内存.__Dictionary继承于Ref类,因此它所能容纳的是Ref及子类所创建的对象指针. 1.创建__Dictionary对象 创建__Dictionary对象有很多函数,下面是总结常用的函数: static __Dictionary* create().创建__ Dictionary. static __Dict

实例介绍Cocos2d-x物理引擎:HelloPhysicsWorld

我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用物理引擎的开发过程,熟悉这些API的使用.这个实例的运行后的场景,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点生成一个新的精灵,精灵的运行是自由落体运动. HelloPhysicsWorld实例 使用物理引擎的一般步骤,如下图所示. 这个过程与上帝创建世界的过程类似,上帝首先创建了世界,然后为世界指定了边界,否则万物就会掉到世界之外的混沌里去了,最后上帝创建了万物.当然这只是一个最基本的步骤,有的时候还需要碰撞检测和使

H3 BPM门户操作说明及实例介绍

一. H3 BPM部件介绍 H3_V9.0门户功能主要由两部分功能组成:前台展示和后台管理: 1. 前台展示 前台展示参考sharepoint部件管理,用于将用户添加的webpart部件在页面上进行展示:如图1. 图1 门户界面 1.1 展现模式 前台展现模式有两种,当以管理员账号登陆时,模块管理提供浏览和设计两种模式.浏览模式用于展现部件内容:设计模式用于部件设计,此模式下提供部件的增加.删除.属性设置.顺序调整功能.见图2.图3:普通用户只有浏览模式. 图2 浏览模式 图3 设计模式 1.2

Cocos2d-x中__Array容器以及实例介绍

__Array类在Cocos2d-x 2.x时代它就是CCArray类.它是模仿Objective-C中的NSArray类而设计的,通过引用计数管理内存.__Array继承于Ref类,因此它所能容纳的是Ref及子类所创建的对象指针. 1.创建__Array对象创建__Array对象有很多函数,下面是总结常用的函数:?static __Array* create().创建__Array.?static __Array* create(Ref* object, -).使用一系列Ref创建__Arra

实例介绍Cocos2d-x中Box2D物理引擎:HelloBox2D

我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用Box2D物理引擎的开发过程,熟悉这些API的使用.这个实例运行后的场景如图所示,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点生成一个新的精灵,精灵的运行自由落体运动. HelloBox2D实例 使用Box2D引擎进行开发过程,如图12-15所示.下面我们就按照这个步骤介绍一下代码部分.首先看一下看HelloWorldScene.h文件,它的代码如下: [html] view plaincopy #ifndef __H

实例介绍Cocos2d-x物理引擎:碰撞检测

碰撞检测是使用物理引擎的一个重要目的,使用物理引擎可以进行精确的碰撞检测,而且执行的效率也很高.在Cocos2d-x 3.x中使用事件派发机制管理碰撞事件,EventListenerPhysicsContact是碰撞事件监听器.碰撞检测相关的API我们在前面一节介绍过了,下面通过一个实例介绍碰撞检测的实现.这个实例的运行后的场景如图所示,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点生成一个新的精灵,精灵的运行是自由落体运动.当这些精灵之间发生接触时候,它们的颜色被设置为黄色,分