zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    N天学习一个linux命令之scp
    php svn仓库提交预处理
    NTP-网络时间协议
    N天学习一个linux命令之umask
    N天学习一个linux命令之xz
    N天学习一个linux命令之xargs
    N天学习一个Linux命令之hostnamectl
    jQuery easyUI的datagrid,如何在翻页以后仍能记录被选中的行
    multiselect2side:jQuery多选列表框插件
    springmvc+jquery实现省市区地址下拉框联动
  • 原文地址:https://www.cnblogs.com/damowang/p/4861447.html
Copyright © 2011-2022 走看看