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(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 (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 }
效果