UI组件好像都是继承自UIWidget.lua啊,可以通过扩展UIWidget.lua,来添加一个具有handler功能的点击事件
local Widget = ccui.Widget
function Widget:onTouch(callback)
self:addTouchEventListener(function(sender, state)
local event = {x = 0, y = 0}
if state == 0 then
event.name = "began"
elseif state == 1 then
event.name = "moved"
elseif state == 2 then
event.name = "ended"
else
event.name = "cancelled"
end
event.target = sender
callback(event)
end)
return self
end
function Widget:onClick(callback)
self:addClickEventListener(function(sender)
--可以做一些通用操作,如播放声音
callback(sender)
end)
end使用的时候,就直接调用onClick方法,传递一个handler过去,这样就可以使用self了
close:onClick(handler(self, self.onClickButton))