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

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

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 then
	local function callback(sender, eventType)
		if eventType == ccui.CheckBoxEventType.selected then
			if sender == manCheck then
				womanCheck:setSelectedState(false)
			else
				manCheck:setSelectedState(false)
			end
		elseif eventType == ccui.CheckBoxEventType.unselected then
			if sender == manCheck then
				womanCheck:setSelectedState(true)
			else
				manCheck:setSelectedState(true)
			end
		end
	end
	manCheck:addEventListener(callback)
	womanCheck:addEventListener(callback)
	manCheck:setSelectedState(true)
	womanCheck:setSelectedState(false)
end	

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

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

--定义常量
local Item_Tag_All        = 1000
local Item_Tag_Equip      = 1001
local Item_Tag_Material   = 1002
local Item_Tag_Other      = 1003

local ButtonSwitch =
{
	[Item_Tag_All] = "全部",
	[Item_Tag_Equip] = "装备",
	[Item_Tag_Material] = "材料",
	[Item_Tag_Other] = "其他",
}

然后创建按钮,并设置tag:

--筛选按钮
local width = title_bg:getContentSize().width
for tag = Item_Tag_All, Item_Tag_Other do
	if ButtonSwitch[tag] then
		local 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 then
				showTable(tag)
			end
		end
		curbtn:addTouchEventListener(callback_tag)
		width = width + curbtn:getContentSize().width + 10
	end
end

最后是显示按钮的规则,把同组的其他table设置成正常,选中的设置成高亮:

--显示一个table
function showTable(showTag)
    for tag = Item_Tag_All, Item_Tag_Other do
        local tagBar = self._widget:getChildByTag(tag)
        if tagBar then
            if showTag == tag then
                tagBar:setBrightStyle(ccui.BrightStyle.highlight)
            else
                tagBar:setBrightStyle(ccui.BrightStyle.normal)
            end
        end
    end
end

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

时间: 2024-10-14 21:06:34

cocos2dx用checkbox实现单选框和button实现table按钮的相关文章

html 复选框(checkbox)和单选框(radio)与文字水平垂直居中对齐

对 input与label同时设置CSS input,label{ vertical-align:middle; }

吾八哥学Selenium(三):操作复选框checkbox/单选框radio的方法

复选框checkbox和单选框radio是web网站里经常会使用到的两个控件,那么在web自动化测试的时候如何利用Selenium来操作这俩控件呢?今天我们就来简单入门练习一下! html测试页面代码如下: <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>学Python网 - seleni

Android初级教程小案例之单选框RadioGroup与复选框CheckBox

Android里面的单选框和html中的其实是一样的效果.这里用到两个控件:CheckBox和RadioGroup.直接上代码: radio.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation=&quo

纯css3实现的超炫checkbox复选框和radio单选框

之前为大家分享了好多css3实现的按钮.今天要为大家分享的是纯css3实现的checkbox复选框和radio单选框,效果超级炫.先让我们看看图吧! 在线预览   源码下载 这个实例完全由css3实现的没有任何js代码.下面我们一起看下实现代码吧 html代码: <div style="width:200px; float:left"> <label> <input type="checkbox" class="option-

css3的实现的checkbox复选框和radio单选框绚丽美化效果

css3的实现的checkbox复选框和radio单选框绚丽美化效果:在css3之前要美化单选框和复选框无非是使用图片进行相关的替换操作,并且还有很大的局限性.由于css3的出现,一切好像变的都变的轻松起来,并且效果非常的绚丽,这是使用css2无法做到的,下面就分享一段能够实现此功能的代码实例,需要的朋友可以做一下参考.代码如下: <!DOCTYPE html><html> <head> <meta charset=" utf-8"> &

JS中获取页面单选框radio和复选框checkbox中当前选中的值

单选框:单选框的name值全部相同 页面有一组单选框的元素<td><input type="radio name="radioid">满意</td>  <td><input type="radio" name="radioid">基本满意</td> var radio=document.getElementsByName("radio"); va

如何让checkbox复选框只能单选

function框架div 在项目开发中遇到一个这样的问题,要让一列复选框架在任何时间段内只能选择一个. 有人说怎么不用单选框了,因为单选框一旦选择了就不能取消选择,所以这里只能用复选框. 经过思考发现可以能过js控制复选框只能单选,实现方法如下: [javascript] view plaincopyprint? $("#txm").find(".checkbox").each(function(){ $(this).click(function(){ var t

可分组的选择框控件(MVVM下)(Toggle样式 仿造单选框RadioButton,复选框CheckBox功能)

原地址: http://www.cnblogs.com/yk250/p/5660340.html 效果图如下:支持分组的单选框,复选框样式和MVVM下功能的实现.这是项目中一个快捷键功能的扩展. 1,准备工作:VS2015 (15对WPF的支持变得异常的好,调试模式下允许自动更改属性.),随VS发布的Blend,几个基础类: 1 public class RelayCommand : ICommand 2 { 3 #region Fields 4 5 readonly Action<object

jquery获取表格中动态单元格内单选框和多选框的值

1.通过table的Id获取到每行(tr)的元素, $("#table_xuan tr") 如果过滤第一行和最后一行 $("#table_xuan tr:not(:first):not(:last)") 2.通过 each()函数遍历 每一行 $("#table_xuan tr").each(function(i)){ // i 代表的是行数 $(this).children("td").each(function(j)){