• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
养眼大魔王
博客园    首页    新随笔    联系   管理    订阅  订阅

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);

 

posted @ 2015-10-08 16:36  养眼大魔王  阅读(812)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3