//
//  LandLordsMakeNewRoom.hpp
//  MalaGame39
//
//  Created by work on 2016/12/19.
//
//
 
#ifndef LandLordsMakeNewRoom_hpp
#define LandLordsMakeNewRoom_hpp
 
#include <stdio.h>
#include <cocos2d.h>
#include "ui/cocosGUI.h"
#include <cocostudio/CocoStudio.h>
using namespace cocos2d::ui;
 
class LandLordsMakeNewRoom : public cocos2d::Layer
{
private:
    cocos2d::Node* m_rootNode;
    Button* m_return;
//    long long m_ruleNum;
    RadioButton* m_boomButton[];
    RadioButton* m_numberButton[];
    int m_ruleNum[] = {,,,,,};
public:
    bool init();
    void onEnter();
    void onExit();
    void buttonReturnCallback(Ref *senderz, cocos2d::extension::Control::EventType controlEvent);
//    void onChangedRadioButtonOneSelect(RadioButton* radioButton, RadioButton::EventType type);
//    void onChangedRadioButtonTwoSelect(RadioButton* radioButton, RadioButton::EventType type);
//    void onChangedRadioButtonThreeSelect(RadioButton* radioButton, RadioButton::EventType type);
//    void onChangedRadioButtonFourSelect(RadioButton* radioButton, RadioButton::EventType type);
    void buttonMakeNewRoomCallback(Ref *senderz, cocos2d::extension::Control::EventType controlEvent);
    void onChangedRadioButtonBoomBgSelect(RadioButton* radioButton, RadioButton::EventType type);
    void onChangedRadioButtonChooseBgSelect(RadioButton* radioButton, RadioButton::EventType type);
    void setLayerData(GameRuleData& rule);
    void checkBoxCallback(CheckBox* sender,CheckBoxEventType type);
    CREATE_FUNC(LandLordsMakeNewRoom);
};
 
 
#endif /* LandLordsMakeNewRoom_hpp */
 
 
 //
//  LandLordsMakeNewRoom.cpp
//  MalaGame39
//
//  Created by work on 2016/12/19.
//
//
 
#include "LandLordsMakeNewRoom.hpp"
#include "cocos-ext.h"
#include <stdio.h>
USING_NS_CC;
using namespace cocos2d::ui;
using namespace cocos2d::extension;
bool LandLordsMakeNewRoom::init()
{
    if (!Layer::init()) {
        return false;
    }
    
    Sprite* bg = Sprite::create("LandLord/LandLordsmake_room_bg.png");//背景图片
    bg->setPosition(Vec2(,));
    this->addChild(bg);
    
    
    auto Relieve=cocos2d::ui::Scale9Sprite::createWithSpriteFrameName("friend_fight_x.png");
    auto m_buttonRelieve = ControlButton::create(Relieve);
    m_buttonRelieve->setPosition( 991.5,644.8);
    m_buttonRelieve->addTargetWithActionForControlEvents(this, cccontrol_selector(LandLordsMakeNewRoom::buttonReturnCallback), Control::EventType::TOUCH_UP_INSIDE);//按钮点击事件
    this->addChild(m_buttonRelieve);
    
    
    auto share=cocos2d::ui::Scale9Sprite::createWithSpriteFrameName("make_btn.png");
    auto m_buttonShare = ControlButton::create(share);
    m_buttonShare->setPosition( ,);
    m_buttonShare->addTargetWithActionForControlEvents(this, cccontrol_selector(LandLordsMakeNewRoom::buttonMakeNewRoomCallback), Control::EventType::TOUCH_UP_INSIDE);
    this->addChild(m_buttonShare);
 
    
    CheckBox* checkBox[] = {nullptr};
    for (int i=;i<;i++){
        //for循环创建4个复选按钮
        checkBox[i] = CheckBox::create("LandLord/make_room_unselected.png",//未选中时的显示图片
                                       "LandLord/make_room_unselected.png",//点击checkBox后触摸没有松开时的图片
                                       "LandLord/make_room_select.png",//选中时的显示图片
                                       "LandLord/make_room_select.png",//从选中到未选中切换过程中,触摸没有松开时的显示图片
                                       "LandLord/make_room_select.png");
        
         checkBox[i]->::LandLordsMakeNewRoom::setPosition(,-(i*));
         checkBox[i]->setTag(i+);
         checkBox[i]->addEventListenerCheckBox(this ,checkboxselectedeventselector(LandLordsMakeNewRoom::checkBoxCallback));
         this->addChild(checkBox[i]);
        
    }
    
    
 
    for (int i = ; i<; i++) {//单选(按钮)
        m_boomButton[i] = RadioButton::create("make_room_unselected.png", "make_room_select.png", Widget::TextureResType::PLIST);
        m_boomButton[i]->setPosition(Vec2(+(*i), ));
        m_boomButton[i]->setTag(i+);
        m_boomButton[i]->addEventListener(CC_CALLBACK_2(LandLordsMakeNewRoom::onChangedRadioButtonBoomBgSelect,this));
        this->addChild(m_boomButton[i]);
    }
 
    
    
    int number[] = {,,};//局数单选
    for (int i = ; i<; i++) {
        m_numberButton[i] = RadioButton::create("make_room_unselected.png", "make_room_select.png", Widget::TextureResType::PLIST);
        m_numberButton[i]->setPosition(Vec2(+*i+, ));
        m_numberButton[i]->setTag(i+);
        m_numberButton[i]->addEventListener(CC_CALLBACK_2(::LandLordsMakeNewRoom::onChangedRadioButtonChooseBgSelect,this));
        this->addChild(m_numberButton[i]);
        auto label = Label::createWithSystemFont(StringUtils::format("%d局(房卡x%d)",number[i],i+), "", );
        label->setColor(Color3B::YELLOW);
        label->setPosition(Vec2(+*i+, ));
        this->addChild(label);
    }
    
    m_boomButton[]->setSelected(true);//默认第一个单选按钮为选中
    m_numberButton[]->setSelected(true);
    
    PublicMethod::addLayerTouchShield(this);
 
    return true;
}
void LandLordsMakeNewRoom::onEnter()
{
    Layer::onEnter();
}
void LandLordsMakeNewRoom::onExit()
{
    Layer::onExit();
}
 
void LandLordsMakeNewRoom::onChangedRadioButtonBoomBgSelect(RadioButton* radioButton, RadioButton::EventType type)
{
    
    if (radioButton == nullptr) {
        return;
    }
    
    int tag = ((RadioButton*)radioButton)->getTag();//获取按钮当前的tag值
    
    for (int i=; i<; i++) {//for循环实现单选
        m_boomButton[i]->setSelected(false);//先让全部按钮设为处于未选中状态
        if (i+==tag) {//通过tag值进入判断
            m_boomButton[i]->setSelected(true);//让当前按钮为选中
            m_ruleNum[]=tag-;
        }
    }
    
}
void LandLordsMakeNewRoom::onChangedRadioButtonChooseBgSelect(RadioButton* radioButton, RadioButton::EventType type)
{
    if (radioButton == nullptr) {
        return;
    }
    
    int tag = ((RadioButton*)radioButton)->getTag();
    
    for (int i=; i<; i++) {
        m_numberButton[i]->setSelected(false);
        if (i+==tag) {
            m_numberButton[i]->setSelected(true);
            m_ruleNum[]=tag-;
        }
    }
} //复选按钮的实现方法
void LandLordsMakeNewRoom::checkBoxCallback(CheckBox* sender,CheckBoxEventType type)
{
    int tag = sender->getTag();//同样需要拿到当前checkBox的tag值
    if(type==CHECKBOX_STATE_EVENT_SELECTED){//判断check的状态(选中状态)
        CCLOG("sender:%d",tag);
        m_ruleNum[tag-]=;
//在这里可做其他操作
    }
    else if(type==CHECKBOX_STATE_EVENT_UNSELECTED)//为未选中状态
    {
        m_ruleNum[tag-]=;
    }
 
}
void LandLordsMakeNewRoom::buttonReturnCallback(Ref *senderz, Control::EventType controlEvent)
{
        removeFromParent();//移除当前图层
    
}

cocos2dx 3.x (单选,多选,复选checkBox按钮的实现) RadioButton的更多相关文章

  1. [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果

    图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...

  2. CSS学习笔记三:自定义单选框,复选框,开关

    一点一点学习CCS,这次学习了如何自定义单选框,复选框以及开关. 一.单选框 1.先写好body里面的样式,先写几个框 <body> <div class="radio-1 ...

  3. 自动化测试-15.selenium单选框与复选框状态判断

    本篇主要介绍单选框和复选框的操作 一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了 ...

  4. 2.12 单选框和复选框(radiobox、checkbox)

    2.12 单选框和复选框(radiobox.checkbox) 本篇主要介绍单选框和复选框的操作一.认识单选框和复选框    1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是 ...

  5. Selenium2学习(十五)-- 单选框和复选框(radiobox、checkbox)

    本篇主要介绍单选框和复选框的操作 一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了 ...

  6. 微信小程序-修改单选框和复选框大小的方法

    方法有两种: 一:采用css的zoom属性 zoom缩放会将元素保持在左上角,并且会有毛边,可能会稍稍改变元素原来的形状. 二:采用css3的transform:scale属性 zoom缩放会将元素保 ...

  7. iOS开发-UITableView单选多选/复选实现1

    TableView怎样实现单选或者多选呢? 我们的直接思路是改动某一个Cell的样式就可以, 那么改动样式须要通过改动相应的数据, 从这里能够判断我们须要给Cell相应的数据设置一个标志位, 当选中的 ...

  8. HTML--使用单选框、复选框,让用户选择

    在使用表单设计调查表时,为了减少用户的操作,使用选择框是一个好主意,html中有两种选择框,即单选框和复选框,两者的区别是单选框中的选项用户只能选择一项,而复选框中用户可以任意选择多项,甚至全选.请看 ...

  9. Selenium3+python自动化 单选框和复选框

    一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了,可以先抽他了. 二.radio和 ...

  10. jQuery获取单选框(复选框)选中的状态

    jQuery 获取单选框(复选框)选中的状态 <input type="checkbox" name="" id="choose"/& ...

随机推荐

  1. 【chrome插件】web版微信接入图灵机器人API实现自动回复

    小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...

  2. Ubuntu菜鸟入门(二)—— apt认知,且完善语言安装包

    一  语言安装包安装 1  原因 虽然安装的中文版,但是由于安装包很小,所以汉化的不够完全,所以要安装后,再下载语言包进行安装 2  方法 二  apt--软件包管理器 1   软件源 (1) 介绍 ...

  3. winform listview控件、容器控件

    ListVies控件主要用于展示数据 常用属性: FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) GridLines:设置行和列之间是否显示网格线. ...

  4. Hibernate的抓取策略

    立即检索:当执行某行代码的时候,马上发出SQL语句进行查询(get())延迟检索:当执行某行代码的时候,不会马上发出SQL语句进行查询.当真正使用这个对象的时候才会发送SQL语句(load()) 类级 ...

  5. 坐标系统与投影变换及在ARCGIS中的应用

      首先提几个问题:是否有遇到坐标转换的问题?又是否有遇到投影转换的问题?坐标转换与投影转换有什么区别?下面看几个概念:1.地球椭球体( Ellipsoid,Spheroid)2.大地基准面( Geo ...

  6. CodeChef - QCHEF 分块

    题目链接:http://vjudge.net/problem/174774/origin 题意:给定一个长度为n的序列a[],序列的值不大于m,现在有k个询问,每个询问给定(l,r).让你求出max{ ...

  7. 手动编译安装docker环境,以及偶尔出现的bug

    总结安装过程如下: 前提:安装git,go,make, docker(docker中编译docker) git clone https://git@github.com/docker/docker c ...

  8. Node.js-视图引擎【1】-Swig集成express的安装与配置

    node.js视图引擎,选来选去发现Swig最符合我的胃口哈哈. 一.安装Swig视图引擎 npm install -g swig 二.在node.js代码中配置如下 var app = requir ...

  9. 怎样看懂Oracle的执行计划

    怎样看懂Oracle的执行计划 一.什么是执行计划 An explain plan is a representation of the access path that is taken when ...

  10. 求两条线段交点zz

    "求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法说一说, 希望对大家有所帮助. 本 ...