为UI组件添加点击事件

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))

首页 我的博客
粤ICP备17103704号