在手机游戏中,一般都会有类似音乐开关这样的按钮,当按钮显示“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; }
using namespace CocosDenshion;
void togglemenuCallBack(CCObject* pSender);
//CCMenuItemToggle的回调方法 void HelloWorld::togglemenuCallBack(CCObject* pSender) { //创建临时CCMenuItemToggle CCMenuItemToggle* temp=(CCMenuItemToggle*)pSender; //根据CCMenuItemToggle的选项来决定音乐的开关 if (temp->getSelectedIndex()==0) { //暂停播放音乐 SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } if (temp->getSelectedIndex()==1) { //继续播放音乐 SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); } }
运行,音乐会根据开关来播放和暂停。