cocos2d-X 3.10关于声音开关以及音量大小问题

用滑动块来控制音量以及声音开关:

加入头文件以及命名空间

.h文件

#include"GUI\CCControlExtension\CCControl.h"
#include"GUI\CCControlExtension\CCControlSwitch.h"
using namespace cocos2d::extension;

定义音量大小值:

float soundValue;

定义声音开关控制函数

void soundSwitch(Ref* psender, Control::EventType controlevent);

cpp文件

#include "ui/CocosGUI.h" 

#include"GUI/CCControlExtension/CCInvocation.h"//当我按照其他人的方法就会出现cccontrol_selector报错,然后我发现cccontrol_selector定义是在Invocation文件中

using namespace ui;
using namespace CocosDenshion;

auto yinliang = Slider::create();
yinliang->loadBarTexture("yinliangn.png");//音量进度条背景
yinliang->loadSlidBallTextures("yinliangb.png", "yinliangb.png", "");//滑动块
yinliang->loadProgressBarTexture("yinliangy.png");//
yinliang->setPercent(soundValue * 100);
yinliang->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
yinliang->addEventListener([=](Ref* pSender, Slider::EventType type) {
if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) {
soundValue = yinliang->getPercent()*0.01;
log("NOW=%.2f", soundValue);
// 设置背景音乐值
SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(soundValue);
// 设置音效值
SimpleAudioEngine::getInstance()->setEffectsVolume(soundValue);
UserDefault::getInstance()->setFloatForKey("soundNum", soundValue);
UserDefault::getInstance()->flush();
}
});
this->addChild(yinliang);
//声音开关
auto soundControl = ControlSwitch::create
(
Sprite::create("switch-mask.png"),
Sprite::create("switch-on.png"),
Sprite::create("switch-off.png"),
Sprite::create("switch-thumb.png"),
Label::createWithSystemFont("On", "Arial-BoldMT", 16),
Label::createWithSystemFont("Off", "Arial-BoldMT", 16)
);
soundControl->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::soundSwitch), Control::EventType::VALUE_CHANGED);
soundControl->setPosition(Vec2(visibleSize.width/2,visibleSize.height*0.3));
this->addChild(soundControl);


}
void HelloWorld::soundSwitch(Ref* psender, Control::EventType controlevent) {
auto fSwitch = (ControlSwitch*)psender;
if (fSwitch->isOn()) {
SimpleAudioEngine::getInstance()->resumeAllEffects();
SimpleAudioEngine::getInstance()->rewindBackgroundMusic();
}
else {
SimpleAudioEngine::getInstance()->stopAllEffects();
SimpleAudioEngine::getInstance()->stopBackgroundMusic();
}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硪就是硪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值