cocos2dx用checkbox实现单选框和button实现table按钮

转载请注明出处:帘卷西风的专栏()

cocos2dx有checkbox和button,,但是checkbox是个复选框,也没有table按钮,本文主要是利用这两个控件来实现单选框和table按钮的功能。

主要思路就是,通过响应checkbox和button的事件,来设置和他一组的其他控件的状态来达到我们需要的效果。

我的工作环境时cocos2dx3.2+lua。

首先看看checkbox的实现,我用来实现男女性别的选择。

local manCheck = self:getChild("CheckBox_Man")local womanCheck = self:getChild("CheckBox_Woman")if manCheck and womanCheck thenlocal function callback(sender, eventType)if eventType == ccui.CheckBoxEventType.selected thenif sender == manCheck thenwomanCheck:setSelectedState(false)elsemanCheck:setSelectedState(false)endelseif eventType == ccui.CheckBoxEventType.unselected thenif sender == manCheck thenwomanCheck:setSelectedState(true)elsemanCheck:setSelectedState(true)endendendmanCheck:addEventListener(callback)womanCheck:addEventListener(callback)manCheck:setSelectedState(true)womanCheck:setSelectedState(false)end

然后再来一个table按钮的实现。

先定义一些table的常量定义:

–定义常量local Item_Tag_All= 1000local Item_Tag_Equip= 1001local Item_Tag_Material = 1002local Item_Tag_Other= 1003local ButtonSwitch = {[Item_Tag_All] = "全部",[Item_Tag_Equip] = "装备",[Item_Tag_Material] = "材料",[Item_Tag_Other] = "其他",}然后创建按钮,并设置tag:–筛选按钮local width = title_bg:getContentSize().widthfor tag = Item_Tag_All, Item_Tag_Other doif ButtonSwitch[tag] thenlocal curbtn = ccui.Button:create()curbtn:setTouchEnabled(true)curbtn:setScale9Enabled(true)curbtn:loadTextures(BTN__NORMAL, BTN_SELECTED, "", ccui.TextureResType.plistType)curbtn:setSize(cc.size(100, 53))local size = curbtn:getContentSize()curbtn:setPosition(cc.p(width + size.width / 2, winSize.height – 20 – size.height / 2))curbtn:setTitleText(ButtonSwitch[tag])curbtn:setTitleFontSize(25)curbtn:setTag(tag)self._widget:addChild(curbtn)–注册点击事件local function callback_tag(sender, eventType)if eventType == ccui.TouchEventType.ended thenshowTable(tag)endendcurbtn:addTouchEventListener(callback_tag)width = width + curbtn:getContentSize().width + 10endend最后是显示按钮的规则,把同组的其他table设置成正常,选中的设置成高亮:–显示一个tablefunction showTable(showTag)for tag = Item_Tag_All, Item_Tag_Other dolocal tagBar = self._widget:getChildByTag(tag)if tagBar thenif showTag == tag thentagBar:setBrightStyle(ccui.BrightStyle.highlight)elsetagBar:setBrightStyle(ccui.BrightStyle.normal)endendendend

好了,分享完了。看看效果图吧!

加油鼓励看好你,一天更比一天强

cocos2dx用checkbox实现单选框和button实现table按钮

相关文章:

你感兴趣的文章:

标签云: