#include "SetScene.h" #include "MissionWeiXin.h" #include "SimpleAudioEngine.h" #include "UserInfo.h" SetScene::SetScene() { m_Imagebg = nullptr; m_SliderMusic = nullptr; m_SliderEffect = nullptr; } SetScene::~SetScene() { } bool SetScene::init() { if (!Node::init()) { return false; }; auto rootPanel = CSLoader::createNode("Platform/SetScene.csb"); CC_ASSERT(rootPanel != nullptr); this->addChild(rootPanel); m_Imagebg = (ImageView*)rootPanel->getChildByName("Imagebg"); CC_ASSERT(m_Imagebg != nullptr); //获取关闭按钮 auto btnClose = (Button*)m_Imagebg->getChildByName("btnClose"); CC_ASSERT(btnClose != nullptr); //注册关闭按钮事件 btnClose->addClickEventListener([this](Ref*){ YSAudioEngine::Instance().playBtnClickEffect(); // 记录 std::string strMusic = StringUtils::format("Music_%d", UserInfo::Instance().getGameID()); std::string strEffect = StringUtils::format("Effect_%d", UserInfo::Instance().getGameID()); std::string strSountType = StringUtils::format("SoundType_%d", UserInfo::Instance().getGameID()); int iMusic = m_SliderMusic->getPercent(); UserDefault::getInstance()->setFloatForKey(strMusic.c_str(), iMusic); int iEffect = m_SliderEffect->getPercent(); UserDefault::getInstance()->setFloatForKey(strEffect.c_str(), iEffect); UserDefault::getInstance()->setIntegerForKey(strSountType.c_str(), m_cbSoundType); //this->removeFromParent(); this->popScene(); }); // 语言设置 m_chbPuTong = (CheckBox*)m_Imagebg->getChildByName("chb_pt"); CC_ASSERT(m_chbPuTong != nullptr); m_RadioGroupYX.AddCheckBox(m_chbPuTong); m_chbPuTong->addClickEventListener([this](Ref*){ m_cbSoundType = 0; YSAudioEngine::Instance().setSoundType(m_cbSoundType); }); m_chbFangYan = (CheckBox*)m_Imagebg->getChildByName("chbFY"); CC_ASSERT(m_chbFangYan != nullptr); m_RadioGroupYX.AddCheckBox(m_chbFangYan); m_chbFangYan->addClickEventListener([this](Ref*){ m_cbSoundType = 1; YSAudioEngine::Instance().setSoundType(m_cbSoundType); }); m_cbSoundType = YSAudioEngine::Instance().getSoundType(); m_RadioGroupYX.setDelauftSelect(m_cbSoundType, true); return true; } void SetScene::onEnter() { Node::onEnter(); InitSimpleAudio(); } void SetScene::onEnterTransitionDidFinish() { Node::onEnterTransitionDidFinish(); } void SetScene::onExit() { Node::onExit(); } void SetScene::InitSimpleAudio() { if (m_Imagebg == nullptr) return; std::string strMusic = StringUtils::format("Music_%d", UserInfo::Instance().getGameID()); std::string strEffect = StringUtils::format("Effect_%d", UserInfo::Instance().getGameID()); int iMusic = UserDefault::getInstance()->getIntegerForKey(strMusic.c_str(), 50); int iEffect = UserDefault::getInstance()->getIntegerForKey(strEffect.c_str(), 50); m_SliderMusic = (Slider*)m_Imagebg->getChildByName("SliderMusic"); CC_ASSERT(m_SliderMusic); m_SliderMusic->setMaxPercent(100); m_SliderEffect = (Slider*)m_Imagebg->getChildByName("SliderEffect"); CC_ASSERT(m_SliderEffect); m_SliderEffect->setMaxPercent(100); m_SliderMusic->setPercent(iMusic); m_SliderEffect->setPercent(iEffect); // 事件初始化 m_SliderMusic->addEventListener(CC_CALLBACK_2(SetScene::SliderCallBack, this)); m_SliderEffect->addEventListener(CC_CALLBACK_2(SetScene::SliderCallBack, this)); } void SetScene::pushScene() { if (m_Imagebg) { this->setVisible(true); m_Imagebg->setScale(0.8f); m_Imagebg->runAction(Sequence::create(Show::create(), ScaleTo::create(0.2f, 1.2f), ScaleTo::create(0.1f, 1.f), nullptr)); } } void SetScene::popScene() { if (m_Imagebg) { m_Imagebg->runAction(Sequence::create(Hide::create(), ScaleTo::create(0.1f, 0.1f), CallFunc::create([&]() { this->setVisible(false); }), nullptr)); } } void SetScene::SliderCallBack(cocos2d::Ref* widget, Slider::EventType type) { Slider* slider = (Slider*)widget; if (type == Slider::EventType::ON_SLIDEBALL_DOWN) { cocos2d::log("slider button pressed!"); } else if (type == Slider::EventType::ON_PERCENTAGE_CHANGED) { cocos2d::log("slider is moving! percent = %f", 100.0f * slider->getPercent() / slider->getMaxPercent()); if (slider == m_SliderEffect) { CocosDenshion::SimpleAudioEngine::getInstance()->setEffectsVolume(slider->getPercent() / (float)slider->getMaxPercent()); } else { CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(slider->getPercent() / (float)slider->getMaxPercent()); } } else if (type == Slider::EventType::ON_SLIDEBALL_UP) { cocos2d::log("slider button is released."); } }