1 // 2 // LandLordsMakeNewRoom.hpp 3 // MalaGame39 4 // 5 // Created by work on 2016/12/19. 6 // 7 // 8 9 #ifndef LandLordsMakeNewRoom_hpp 10 #define LandLordsMakeNewRoom_hpp 11 12 #include <stdio.h> 13 #include <cocos2d.h> 14 #include "ui/cocosGUI.h" 15 #include <cocostudio/CocoStudio.h> 16 using namespace cocos2d::ui; 17 18 class LandLordsMakeNewRoom : public cocos2d::Layer 19 { 20 private: 21 cocos2d::Node* m_rootNode; 22 Button* m_return; 23 // long long m_ruleNum; 24 RadioButton* m_boomButton[4]; 25 RadioButton* m_numberButton[3]; 26 int m_ruleNum[6] = {0,0,0,0,0,0}; 27 public: 28 bool init(); 29 void onEnter(); 30 void onExit(); 31 void buttonReturnCallback(Ref *senderz, cocos2d::extension::Control::EventType controlEvent); 32 // void onChangedRadioButtonOneSelect(RadioButton* radioButton, RadioButton::EventType type); 33 // void onChangedRadioButtonTwoSelect(RadioButton* radioButton, RadioButton::EventType type); 34 // void onChangedRadioButtonThreeSelect(RadioButton* radioButton, RadioButton::EventType type); 35 // void onChangedRadioButtonFourSelect(RadioButton* radioButton, RadioButton::EventType type); 36 void buttonMakeNewRoomCallback(Ref *senderz, cocos2d::extension::Control::EventType controlEvent); 37 void onChangedRadioButtonBoomBgSelect(RadioButton* radioButton, RadioButton::EventType type); 38 void onChangedRadioButtonChooseBgSelect(RadioButton* radioButton, RadioButton::EventType type); 39 void setLayerData(GameRuleData& rule); 40 void checkBoxCallback(CheckBox* sender,CheckBoxEventType type); 41 CREATE_FUNC(LandLordsMakeNewRoom); 42 }; 43 44 45 #endif /* LandLordsMakeNewRoom_hpp */ 46 47
1 // 2 // LandLordsMakeNewRoom.cpp 3 // MalaGame39 4 // 5 // Created by work on 2016/12/19. 6 // 7 // 8 9 #include "LandLordsMakeNewRoom.hpp" 10 #include "cocos-ext.h" 11 #include <stdio.h> 12 USING_NS_CC; 13 using namespace cocos2d::ui; 14 using namespace cocos2d::extension; 15 bool LandLordsMakeNewRoom::init() 16 { 17 if (!Layer::init()) { 18 return false; 19 } 20 21 Sprite* bg = Sprite::create("LandLord/LandLordsmake_room_bg.png");//背景图片 22 bg->setPosition(Vec2(612,372)); 23 this->addChild(bg); 24 25 26 auto Relieve=cocos2d::ui::Scale9Sprite::createWithSpriteFrameName("friend_fight_x.png"); 27 auto m_buttonRelieve = ControlButton::create(Relieve); 28 m_buttonRelieve->setPosition( 991.5,644.8); 29 m_buttonRelieve->addTargetWithActionForControlEvents(this, cccontrol_selector(LandLordsMakeNewRoom::buttonReturnCallback), Control::EventType::TOUCH_UP_INSIDE);//按钮点击事件 30 this->addChild(m_buttonRelieve); 31 32 33 auto share=cocos2d::ui::Scale9Sprite::createWithSpriteFrameName("make_btn.png"); 34 auto m_buttonShare = ControlButton::create(share); 35 m_buttonShare->setPosition( 627,117); 36 m_buttonShare->addTargetWithActionForControlEvents(this, cccontrol_selector(LandLordsMakeNewRoom::buttonMakeNewRoomCallback), Control::EventType::TOUCH_UP_INSIDE); 37 this->addChild(m_buttonShare); 38 39 40 CheckBox* checkBox[4] = {nullptr}; 41 for (int i=0;i<4;i++){ 42 //for循环创建4个复选按钮 43 checkBox[i] = CheckBox::create("LandLord/make_room_unselected.png",//未选中时的显示图片 44 "LandLord/make_room_unselected.png",//点击checkBox后触摸没有松开时的图片 45 "LandLord/make_room_select.png",//选中时的显示图片 46 "LandLord/make_room_select.png",//从选中到未选中切换过程中,触摸没有松开时的显示图片 47 "LandLord/make_room_select.png"); 48 49 checkBox[i]->::LandLordsMakeNewRoom::setPosition(402,500-(i*40)); 50 checkBox[i]->setTag(i+1); 51 checkBox[i]->addEventListenerCheckBox(this ,checkboxselectedeventselector(LandLordsMakeNewRoom::checkBoxCallback)); 52 this->addChild(checkBox[i]); 53 54 } 55 56 57 58 for (int i = 0; i<4; i++) {//单选(按钮) 59 m_boomButton[i] = RadioButton::create("make_room_unselected.png", "make_room_select.png", Widget::TextureResType::PLIST); 60 m_boomButton[i]->setPosition(Vec2(500+(106*i), 330)); 61 m_boomButton[i]->setTag(i+11); 62 m_boomButton[i]->addEventListener(CC_CALLBACK_2(LandLordsMakeNewRoom::onChangedRadioButtonBoomBgSelect,this)); 63 this->addChild(m_boomButton[i]); 64 } 65 66 67 68 int number[3] = {6,10,20};//局数单选 69 for (int i = 0; i<3; i++) { 70 m_numberButton[i] = RadioButton::create("make_room_unselected.png", "make_room_select.png", Widget::TextureResType::PLIST); 71 m_numberButton[i]->setPosition(Vec2(450+200*i+20, 270)); 72 m_numberButton[i]->setTag(i+21); 73 m_numberButton[i]->addEventListener(CC_CALLBACK_2(::LandLordsMakeNewRoom::onChangedRadioButtonChooseBgSelect,this)); 74 this->addChild(m_numberButton[i]); 75 auto label = Label::createWithSystemFont(StringUtils::format("%d局(房卡x%d)",number[i],i+1), "", 24); 76 label->setColor(Color3B::YELLOW); 77 label->setPosition(Vec2(450+200*i+20, 240)); 78 this->addChild(label); 79 } 80 81 m_boomButton[0]->setSelected(true);//默认第一个单选按钮为选中 82 m_numberButton[0]->setSelected(true); 83 84 PublicMethod::addLayerTouchShield(this); 85 86 return true; 87 } 88 void LandLordsMakeNewRoom::onEnter() 89 { 90 Layer::onEnter(); 91 } 92 void LandLordsMakeNewRoom::onExit() 93 { 94 Layer::onExit(); 95 } 96 97 void LandLordsMakeNewRoom::onChangedRadioButtonBoomBgSelect(RadioButton* radioButton, RadioButton::EventType type) 98 { 99 100 if (radioButton == nullptr) { 101 return; 102 } 103 104 int tag = ((RadioButton*)radioButton)->getTag();//获取按钮当前的tag值 105 106 for (int i=0; i<4; i++) {//for循环实现单选 107 m_boomButton[i]->setSelected(false);//先让全部按钮设为处于未选中状态 108 if (i+11==tag) {//通过tag值进入判断 109 m_boomButton[i]->setSelected(true);//让当前按钮为选中 110 m_ruleNum[4]=tag-11; 111 } 112 } 113 114 } 115 void LandLordsMakeNewRoom::onChangedRadioButtonChooseBgSelect(RadioButton* radioButton, RadioButton::EventType type) 116 { 117 if (radioButton == nullptr) { 118 return; 119 } 120 121 int tag = ((RadioButton*)radioButton)->getTag(); 122 123 for (int i=0; i<3; i++) { 124 m_numberButton[i]->setSelected(false); 125 if (i+21==tag) { 126 m_numberButton[i]->setSelected(true); 127 m_ruleNum[5]=tag-21; 128 } 129 } 130 } 131 132 //复选按钮的实现方法 133 void LandLordsMakeNewRoom::checkBoxCallback(CheckBox* sender,CheckBoxEventType type) 134 { 135 int tag = sender->getTag();//同样需要拿到当前checkBox的tag值 136 if(type==CHECKBOX_STATE_EVENT_SELECTED){//判断check的状态(选中状态) 137 CCLOG("sender:%d",tag); 138 m_ruleNum[tag-1]=1; 139 //在这里可做其他操作 140 } 141 else if(type==CHECKBOX_STATE_EVENT_UNSELECTED)//为未选中状态 142 { 143 m_ruleNum[tag-1]=0; 144 } 145 146 } 147 void LandLordsMakeNewRoom::buttonReturnCallback(Ref *senderz, Control::EventType controlEvent) 148 { 149 removeFromParent();//移除当前图层 150 151 }