Cocos2d-x开关按钮CCMenuItemToggle的使用

来源:互联网 发布:淘宝卖家手机打印快递 编辑:程序博客网 时间:2024/05/21 15:02

       在手机游戏中,一般都会有类似音乐开关这样的按钮,当按钮显示“On”时,按下去音乐会打开,并且按钮显示改变为“Off”。在Cocos2d-x中,用CCMenuItemToggle实现这种开关按钮。接下来我们来学习一下它的使用方法。

       首先新建一个项目。命名为“ToggleMenuTest”,然后我们从TestCpp示例项目的Resource目录下将我们需要的background.mp3文件复制到我们新建的项目的Resource目录下。

       然后修改HelloWorld.cpp文件的init方法如下:

bool HelloWorld::init(){    bool bRet = false;    do     {//开启背景音乐SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background.mp3",true);//创建开关按钮选项,并设置回调函数CCMenuItemToggle* toggleItem = CCMenuItemToggle::createWithTarget(this, menu_selector(HelloWorld::togglemenuCallBack),CCMenuItemFont::create( "On" ),CCMenuItemFont::create( "Off"),NULL );//根据背景音乐是否播放来决定显示“On”或“Off”if (SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()){toggleItem->setSelectedIndex(1);} else{toggleItem->setSelectedIndex(0);}//创建菜单CCMenu *menu = CCMenu::create(toggleItem,NULL);//加入到布景中this->addChild(menu);        bRet = true;    } while (0);    return bRet;}

我们要在.cpp文件的开头引入命名空间CocosDenshion,代码如下:

using namespace CocosDenshion;

然后实现开关按钮的回调函数,在HelloWorld.h文件中声明此函数

void togglemenuCallBack(CCObject* pSender);

在.cpp里添加函数的实现,代码如下:

//CCMenuItemToggle的回调方法void HelloWorld::togglemenuCallBack(CCObject* pSender){//创建临时CCMenuItemToggleCCMenuItemToggle* temp=(CCMenuItemToggle*)pSender;//根据CCMenuItemToggle的选项来决定音乐的开关if (temp->getSelectedIndex()==0){ //暂停播放音乐SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();}if (temp->getSelectedIndex()==1){//继续播放音乐SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();}}

运行,音乐会根据开关来播放和暂停。

               

原创粉丝点击