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();
	}
}

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

               

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值