博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx 3.x (单选,多选,复选checkBox按钮的实现) RadioButton
阅读量:6245 次
发布时间:2019-06-22

本文共 7330 字,大约阅读时间需要 24 分钟。

1 // 2 //  LandLordsMakeNewRoom.hpp 3 //  MalaGame39 4 // 5 //  Created by work on 2016/12/19. 6 // 7 // 8   9 #ifndef LandLordsMakeNewRoom_hpp10 #define LandLordsMakeNewRoom_hpp11  12 #include 
13 #include
14 #include "ui/cocosGUI.h"15 #include
16 using namespace cocos2d::ui;17  18 class LandLordsMakeNewRoom : public cocos2d::Layer19 {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 
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 }

 

转载于:https://www.cnblogs.com/luorende/p/6206397.html

你可能感兴趣的文章
关系数据库常用SQL语句语法大全
查看>>
对mybastis 的理解2--BaseDao接口方法声明
查看>>
我的友情链接
查看>>
活动目录相关的面试题(上)
查看>>
Slackware64安装32位库和rtx
查看>>
MVC3----AJAX辅助方法
查看>>
windows 2012添加桌面图标
查看>>
maven 下载 源码和javadoc命令
查看>>
获取链接参数
查看>>
vim的增强功能
查看>>
HTTP statusCode 各状态值,说明
查看>>
译:Hibernate Search - Getting started(Chapter 2)
查看>>
Redis data structure design for sorting time-based values
查看>>
vim 参考手册
查看>>
symfony1.4下使用登陆验证码
查看>>
截图软件
查看>>
可以直接拿来用的15个jQuery代码片段(收藏!!!)
查看>>
利用 gnuplot 绘制图 sar搜集数据
查看>>
java IO系列
查看>>
我的友情链接
查看>>