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)