#include "JoinScene.h" #include "Define.h" #include "Utility.h" JoinScene::JoinScene() { memset(m_cbRoomID, 0xff, sizeof(m_cbRoomID)); memset(m_SpriteNum, 0x0, sizeof(m_SpriteNum)); memset(m_btnNum, 0x0, sizeof(m_btnNum)); m_isJoinRoom = true; } JoinScene::~JoinScene() { } bool JoinScene::init() { if (!Node::init()) { return false; }; auto rootPanel = CSLoader::createNode("Platform/JoinScene.csb"); CC_ASSERT(rootPanel != nullptr); this->addChild(rootPanel); m_ImageViewBg = (ImageView*)rootPanel->getChildByName("Imagebg"); CC_ASSERT(nullptr != m_ImageViewBg); //获取关闭按钮 auto btnClose = (Button*)m_ImageViewBg->getChildByName("btnClose"); CC_ASSERT(btnClose != nullptr); //注册关闭按钮事件 btnClose->addClickEventListener([this](Ref*){ //this->removeFromParent(); YSAudioEngine::Instance().playBtnClickEffect(); this->popScene(); }); m_txtTitle = (Text*)m_ImageViewBg->getChildByName("txtTitle"); CC_ASSERT(m_txtTitle != nullptr); InitUI(m_ImageViewBg); return true; } void JoinScene::onEnter() { Node::onEnter(); } void JoinScene::onEnterTransitionDidFinish() { Node::onEnterTransitionDidFinish(); } void JoinScene::onExit() { Node::onExit(); } // UI初始化 void JoinScene::InitUI(Node* rootPanel) { if (nullptr == rootPanel) return; for (int i = 0; i < 6; i++) { std::string strKey = __String::createWithFormat("txtNum_%d", i)->getCString(); m_SpriteNum[i] = (Text*)rootPanel->getChildByName(strKey); CC_ASSERT(m_SpriteNum[i]); if (nullptr == m_SpriteNum[i]) continue; m_SpriteNum[i]->setString(""); } for (int j = 0; j < 10; j++) { std::string strKey = __String::createWithFormat("btn_num_%d", j)->getCString(); m_btnNum[j] = (Button*)rootPanel->getChildByName(strKey); CC_ASSERT(m_btnNum[j] != nullptr); m_btnNum[j]->addClickEventListener(CC_CALLBACK_1(JoinScene::onClickNumber, this)); } // 删除 auto btnDel = (Button*)rootPanel->getChildByName("btn_del"); CC_ASSERT(btnDel != nullptr); btnDel->addClickEventListener([this](Ref* obj){ YSAudioEngine::Instance().playBtnClickEffect(); for (int k = 5; k >= 0; k--) { if (m_cbRoomID[k] != 0xff) { m_cbRoomID[k] = 0xff; m_SpriteNum[k]->setString(""); break; } } }); // 清空 auto btnC = (Button*)rootPanel->getChildByName("btn_C"); CC_ASSERT(btnC != nullptr); btnC->addClickEventListener([this](Ref* pSender){ YSAudioEngine::Instance().playBtnClickEffect(); for (int k = 5; k >= 0; k--) { m_cbRoomID[k] = 0xff; m_SpriteNum[k]->setString(""); } }); } void JoinScene::onClickNumber(Ref* obj) { YSAudioEngine::Instance().playBtnClickEffect(); int num = 0xff; // 查找按钮数字 for (int i = 0; i < 10; i++) { if (obj == m_btnNum[i]) { num = i; break; } } if (0xff == num) return; for (int k = 0; k < 6; k++) { if (m_cbRoomID[k] == 0xff) { m_cbRoomID[k] = num; // 修改图片 std::string strKey = __String::createWithFormat("%d", num)->getCString(); m_SpriteNum[k]->setString(strKey); break; } } // 已经输入六位 if (m_cbRoomID[5] != 0xff) { auto dispatcher = Director::getInstance()->getEventDispatcher(); int iRoomID = 0; int iCarry[6] = { 100000, 10000, 1000, 100, 10, 1 }; // 进位 for (int i = 0; i < 6; i++) { int num = 0; if (0xff != m_cbRoomID[i]) { num = m_cbRoomID[i]; } iRoomID += num * iCarry[i]; } __Integer* pnNum = __Integer::create(iRoomID); if (m_isJoinRoom) { EventCustom event(JOIN_PRIVATE_ROOM_EVENT); event.setUserData(pnNum); dispatcher->dispatchEvent(&event); } else { EventCustom event(INPUT_UNION_ID); event.setUserData(pnNum); dispatcher->dispatchEvent(&event); } } return; } void JoinScene::pushScene(bool isJoinRoom /*= true*/) { if (m_ImageViewBg) { m_isJoinRoom = isJoinRoom; if (m_isJoinRoom) { m_txtTitle->setString(utility::a_u8("请输入6位房间号")); } else { m_txtTitle->setString(utility::a_u8("请输入公会码")); } for (int k = 5; k >= 0; k--) { m_cbRoomID[k] = 0xff; m_SpriteNum[k]->setString(""); } this->setVisible(true); m_ImageViewBg->setScale(0.8f); m_ImageViewBg->runAction(Sequence::create(Show::create(), ScaleTo::create(0.2f, 1.2f), ScaleTo::create(0.1f, 1.f), nullptr)); } } void JoinScene::popScene() { if (m_ImageViewBg) { m_ImageViewBg->runAction(Sequence::create(Hide::create(), ScaleTo::create(0.1f, 0.1f), CallFunc::create([&]() { for (int k = 5; k >= 0; k--) { m_cbRoomID[k] = 0xff; m_SpriteNum[k]->setString(""); } this->setVisible(false); }), nullptr)); } }