【乐畅】工作积累 ---- 调节音量大小 (滑动条调节音量大小并保存起来 )

本文介绍如何在Cocos2dx中实现音乐与音效的音量控制,包括使用滑动条设置音量大小,并通过回调事件更新音量值。同时提供了获取和设置音量值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cocos2dx 的音量的大小的范围是 0.0f ~ 1.0f

 

 

 1     // 获取音量大小
 2     float musicVolume = getMusicVolume();
 3     float effectVolume = getEffectVolume();
 4 
 5     SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(musicVolume);
 6     SimpleAudioEngine::sharedEngine()->setEffectsVolume(effectVolume);
 7     
 8     // 音乐
 9     ControlSlider *sliderMusic = ControlSlider::create("Setting/ttttt.png", "Setting/ttttt.png", "Setting/ttdd.png");
10     sliderMusic->setPosition( Vec2(pBack->getContentSize().width * 0.6, pBack->getContentSize().height * 0.63));
11     // 设置滑动条的范围
12     sliderMusic->setMinimumValue(0.0f);
13     sliderMusic->setMaximumValue(100.0f);
14     // 设置当前滑动条的当前值
15     sliderMusic->setValue(musicVolume * 100.0f);
16     sliderMusic->addTargetWithActionForControlEvents(this, cccontrol_selector(DialogSetting::changeMusic), Control::EventType::VALUE_CHANGED);
17     pBack->addChild(sliderMusic);
18 
19     // 音效
20     ControlSlider *sliderEffect = ControlSlider::create("Setting/ttttt.png", "Setting/ttttt.png", "Setting/ttdd.png");
21     sliderEffect->setPosition( Vec2(pBack->getContentSize().width * 0.6, pBack->getContentSize().height * 0.45));
22     // 设置滑动条的范围
23     sliderEffect->setMinimumValue(0.0f);
24     sliderEffect->setMaximumValue(100.0f);
25     // 设置当前滑动条的当前值
26     sliderEffect->setValue(effectVolume * 100.0f);
27     sliderEffect->addTargetWithActionForContro

回调事件

 1 void DialogSetting::changeMusic( Ref *pSender, Control::EventType event )
 2 {
 3     ControlSlider *target = static_cast<ControlSlider *>(pSender);
 4     float musicVolume = target->getValue() / 100.0f;
 5     SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(musicVolume);
 6     setMusicVolume(musicVolume);
 7 }
 8 
 9 void DialogSetting::changeEffect( Ref *pSender, Control::EventType event )
10 {
11     ControlSlider *target = static_cast<ControlSlider *>(pSender);
12     float effectVolume = target->getValue() / 100.0f;
13     SimpleAudioEngine::sharedEngine()->setEffectsVolume(effectVolume);
14     setEffectVolume(effectVolume);
15 }

存储数据

 1 float getMusicVolume()
 2 {
 3     char buff[32];
 4     sprintf(buff, "%s_MusicVolume", GameName);
 5     return GetFloatToXML(buff, 1.0f);
 6 }
 7 
 8 void setMusicVolume(float volume)
 9 {
10     char buff[32];
11     sprintf(buff, "%s_MusicVolume", GameName);
12     SetFloatToXML(buff, volume);
13     SaveFlush;
14 }
15 
16 float getEffectVolume()
17 {
18     char buff[32];
19     sprintf(buff, "%s_EffectVolume", GameName);
20     return GetFloatToXML(buff, 1.0f);
21 }
22 
23 void setEffectVolume(float volume)
24 {
25     char buff[32];
26     sprintf(buff, "%s_EffectVolume", GameName);
27     SetFloatToXML(buff, volume);
28     SaveFlush;
29 }

 

效果

 

 

 

转载于:https://www.cnblogs.com/dudu580231/p/5684800.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值