读一读

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)