按钮事件

在Cocos-Lua中按钮分为三种Button控件,分别是UIPushButton、UICheckBoxButton和UICheckBoxButtonGroup,它们全部派生自UIButton。

1.UIButton按钮事件

上面三个Button控件全部派生自UIButton,可以监听如下事件:
(1):CLICKED,单击按钮。使用UIButton:onButtonClicked(callback)方法监听;
(2): PRESSED,按下按钮。使用UIButton:onButtonPressed(callback)方法监听;
(3):RELEASE,释放按钮。使用UIButton:onButtonRelease(callback)方法监听;
(4):STATE_CHANGED,状态改变(enable和disable之间的转换)。使用UIButton:onButtonStateChanged(callback)方法监听。

2.UIPushButton

这种按钮是最普遍的,就是那种按下去之后会自动弹起的按钮,通过cc.ui.UIPushButton.new(images,options)方法创建一个UIPushButton按钮,images是table类型,代表了按钮按下和弹起状态的图片;options是table类型,是一个可选参数。包含scale9、flipX和flipY的设置。下面是创建代码和效果图:
function MainScene:ctor()
	local images={
		normal="button/Button01.png",
		pressed="button/Button01.png",
		disable="button/Button01Disable.png",
	}

	cc.ui.UIPushButton.new(images, {scale9=true})
		:setButtonSize(240,60)
		:setButtonLabel("normal", cc.ui.UILabel.new({
				UILabelType=2,
				text="this is a PushButton",
				size=18
			}))

		:setButtonLabel("pressed", cc.ui.UILabel.new({
			UILabelType=2,
			text="Button Pressed",
			size=18,
			color=cc.c3b(255, 64, 64)
			}))

		:setButtonLabel("disabled", cc.ui.UILabel.new({
			UILabelType=2,
			text="Button Disabled",
			size=18,
			color=cc.c3b(0, 0, 0)
			}))

		:onButtonClicked(function (event)
			-- body
			print("pushButtton click")
		end)
		:align(display.LEFT_CENTER, display.left+80, display.top-80)
		:addTo(self)
end




3.UICheckBoxButton

这种按钮差不多就是一个开关类似于电气设备上的on/off,只能在这两者切换。可以通过cc.ui.UICheckBoxButton.new(imaegs,options),参数和UIPushButton一样的,代码如下:
local images={
			off="button/CheckBoxButtonOff.png",
			off_pressed="button/CheckBoxButtonOffPressed.png",
			off_disabled="button/CheckBoxButtonOffDisabled.png",
			on="button/CheckBoxButtonOn.png",
			on_pressed="button/CheckBoxButtonOnPressed.png",
			on_disabled="button/CheckBoxButtonDisabled.png",
		}

		local function updateCheckBoxButtonLabel(checkbox)
		local state=" "
			if checkbox:isButtonSelected() then
				state="on"
			else
				state="off"
			end

			if not checkbox:isButtonEnabled() then
				state=state.."(disabled)"
			end
			checkbox:setButtonLabelString(string.format("state is %s", state))
		end

		local checkBoxButton1=cc.ui.UICheckBoxButton.new(images)
			:setButtonLabel(cc.ui.UILabel.new({text=" ",size=22,color=cc.c3b(255, 96, 255)}))
			:setButtonLabelOffset(0, -40)--设置文本显示的偏移位置
			:setButtonLabelAlignment(display.CENTER)
			:onButtonStateChanged(function (event)
				-- body
				updateCheckBoxButtonLabel(event.target)
			end)
			:align(display.LEFT_CENTER,display.left+40,display.top-80)
			:addTo(self)

		updateCheckBoxButtonLabel(checkBoxButton1)


4.UICheckBoxButtonGroup按钮
这种按钮排列一组,但是同时只能有一个被选择,可以通过cc.ui.UICheckBoxButtonGroup.new(direction)创建UICheckBoxButtonGroup按钮,其中direction是integer类型,代表了按钮的排列方向:display.LEFT_TO_RIGHT,display.RIGHT_TOLEFT,display.TOP_TO_BOTTOM,display.BOTTOM_TO_TOP。
这组按钮的每一个其实就是UICheckBoxBUtton,用removeButtonAtIndex(index)可以指定删除的某个按钮,创建代码如下:
local images={
		off="button/RadioButtonOff.png",
		off_pressed="button/RadioButtonOffPressed.png",
		off_disabled="button/RadioButtonOffDisabled.png",
		on="button/RadioButtonOn.png",
		on_pressed="button/RadioButtonOnPressed.png",
		on_disabled="button/RadioButtonOnDisabled.png",
	}

	local group=cc.ui.UICheckBoxButtonGroup.new(display.TOP_TO_BOTTOM)
		:addButton(cc.ui.UICheckBoxButton.new(images)
			:setButtonLabel(cc.ui.UILabel.new({text="option1",color=display.COLOR_WHITE}))
			:setButtonLabelOffset(20,0)
			:align(display.LEFT_CENTER)
		)

		:addButton(cc.ui.UICheckBoxButton.new(images)
			:setButtonLabel(cc.ui.UILabel.new({text="option2",color=display.COLOR_WHITE}))
			:setButtonLabelOffset(20, 0)
			:align(display.LEFT_CENTER)
		)

		:addButton(cc.ui.UICheckBoxButton.new(images)
			:setButtonLabel(cc.ui.UILabel.new({text="option3",color=display.COLOR_WHITE}))
			:setButtonLabelOffset(20, 0)
			:align(display.LEFT_CENTER)
		)

		:addButton(cc.ui.UICheckBoxButton.new(images)
			:setButtonLabel(cc.ui.UILabel.new({text="option4 disabled",color=display.COLOR_WHITE}))
			:setButtonEnabled(false)
			:setButtonLabelOffset(20, 0)
			:align(display.LEFT_CENTER)
		)

		:setButtonsLayoutMargin(10, 10,10,10)
		:onButtonSelectChanged(function(event)
			print("Option %d selected,Option %d unselected",event.selected,event.last)
		end)
		:align(display.LEFT_CENTER, display.left+40, display.top-440)
		:addTo(self)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值