cocos代码研究(17)Widget子类RadioButtonGroup学习笔记

理论基础

RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互。 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被选中状态。继承自Widget。

代码实践

RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互。 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被选中状态。继承自Widget。

static RadioButtonGroup * create ()
创建并返回一个RadioButtonGroup实例。

//添加删除单选按钮
virtual void addRadioButton (RadioButton *radioButton)
添加一个单选按钮到这个组。

virtual void removeRadioButton (RadioButton *radioButton)
从这组删除一个单选按钮。

virtual void removeAllRadioButtons ()
从这一组中删除所有单选按钮。

ssize_t getNumberOfRadioButtons () const
获取分组里面的单选按钮的数量.

//和选中状态有关
RadioButton * getRadioButtonByIndex (int index) const
在一组单选按钮中, 通过索引来选择。

virtual int getSelectedButtonIndex () const
获取选中单选按钮的索引。

virtual void setSelectedButton (int index)
通过索引设置一个单选按钮处于选中状态。

virtual void setSelectedButton (RadioButton *radioButton)
通过指针设置一个单选按钮处于选中状态.

virtual void setSelectedButtonWithoutEvent (int index)
通过单选按钮在组里面的索引来设置选中状态, 但是此方法不会响应事件处理

virtual void setSelectedButtonWithoutEvent (RadioButton *radioButton)
通过单选按钮的指针来设置选中状态, 但是此方法不会响应事件处理

void addEventListener (const ccRadioButtonGroupCallback &callback)
添加一个回调函数, 它将在单选按钮被选中或者取消的时候被调用.

void setAllowedNoSelection (bool allowedNoSelection)
设置一个标记允许组里面出现未选择功能。 如果它是允许的,则可以不用选择单选按钮。 如果它是不允许的,那么, 每时每刻都必须选择一个单选按钮,除了它是空的。 默认是不允许的。

bool isAllowedNoSelection () const
查询是否允许组里面存在一个都不选择的情况。

实例:

        // Create a radio button group
        RadioButtonGroup* radioButtonGroup = RadioButtonGroup::create();
        _uiLayer->addChild(radioButtonGroup);
        
        // Create the radio buttons
        static const int NUMBER_OF_BUTTONS = 3;
        float startPosX = widgetSize.width / 2.0f - ((NUMBER_OF_BUTTONS - 1) / 2.0f) * buttonWidth;
        for(int i = 0; i < NUMBER_OF_BUTTONS; ++i)
        {
            auto filePathNormal = StringUtils::format("cocosui/btn_exercise%02d_n.png", i + 1);
            auto filePathSelected = StringUtils::format("cocosui/btn_exercise%02d_p.png", i + 1);
            RadioButton* radioButton = RadioButton::create(filePathNormal, filePathSelected);
            float posX = startPosX + buttonWidth * i;
            radioButton->setPosition(Vec2(posX, widgetSize.height / 2.0f));
            radioButton->setScale(BUTTON_SCALE);
            radioButton->setZoomScale(0.05f);
            radioButtonGroup->addRadioButton(radioButton);
            _uiLayer->addChild(radioButton);
        }
        radioButtonGroup->setSelectedButton(0);

 

转载于:https://www.cnblogs.com/damowang/p/4861447.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值