Cocos2d-x开关按钮CCMenuItemToggle的使用

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

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

               

你可能感兴趣的:(cocos2d-x,开关按钮)