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))
btn:setTitleText("按钮") --按钮文字
btn:setTitleFontSize(25) --字体大小
btn:setTitleOffset(20, 100) --偏移
btn:setTitleColor(cc.c3b(255, 255, 255)) --字体颜色
btn:onClick(handler(self, self.onClickButton)) --按钮的回调函数
--加载更换Normal状态下的图片
btn:loadTextureNormal("plist/gui-dian.png",1) --后面的参数1表示从图集加载
--加载更换三个状态的图片
btn:loadTextures("plist/gui-dian.png","plist/gui-helpbtn.png","",1)