cocos2dx:控件長按處理

--[[ 
控件長按處理
@params widget 目標控件
@params commCallback(function) 正常點擊回調
@params allowLongPress(boolean) 是否支持長按
@params longPressCallback(function) 長按回調
@params intervalTime(float) 判斷長按的時間間隔(默認0.5s)
使用示例:
setTouchEventListenerEx(
    widget,
    function(sender, eventType)
        print("正常點擊")
    end,
    true,
    function(sender, eventType)
        print("長按")
    end,
    1.0
)
]]

function setTouchEventListenerEx(widget, commCallback, allowLongPress, longPressCallback, intervalTime)
    local socket, beginTime = require("socket")
    widget:addTouchEventListener(function(sender, eventType)
        if eventType == ccui.TouchEventType.began then
            beginTime = socket.gettime()
        elseif eventType == ccui.TouchEventType.ended or eventType == ccui.TouchEventType.canceled then
            local diffTime = socket.gettime() - beginTime
            local longPressTime = intervalTime or 0.5
            if allowLongPress and diffTime > longPressTime then
                if longPressCallback then
                    longPressCallback(sender, eventType)
                end
            else
                if commCallback then
                    commCallback(sender, eventType)
                end
            end
        end
    end)
end

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章