首页 > 代码库 > quick-x 触摸事件的新方法

quick-x 触摸事件的新方法

--[[ local function onTouch(event, x, y) print(event, x, y) if event == "began" then return true -- 在 began 事件里返回 true,表示要接收后续的触摸事件 end end

    local layer = display.newLayer()
    layer:addTouchEventListener(onTouch)
    layer:setTouchEnabled(true) -- 注册后还必须启用触摸

    rect:addChild(layer) -- 还要将 CCLayer 对象加入场景或其他显示对象中

]]

以上是qx的旧的写法。

而新的2.3.3的写法则是:

   rect:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE) -- 单点触摸
    rect:setTouchEnabled(true)
    rect:setTouchCaptureEnabled(true)
    rect:setTouchSwallowEnabled(true)

    -- 添加触摸事件处理函数
    rect:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
        -- event.phase 的值是:
        -- cc.NODE_TOUCH_TARGETING_PHASE

        -- event.mode 的值是下列之一:
        -- cc.TOUCH_MODE_ONE_BY_ONE 单点触摸
        -- cc.TOUCH_MODE_ALL_AT_ONCE 多点触摸

        -- event.name 的值是下列之一:
        -- began 触摸开始
        -- moved 触摸点移动
        -- ended 触摸结束
        -- cancelled 触摸被取消

        -- 如果是单点触摸:
        -- event.x, event.y 是触摸点位置
        -- event.prevX, event.prevY 是触摸点之前的位置

        -- 如果是多点触摸:
        -- event.points 包含了所有触摸点的信息
        -- event.points = {point, point, ...}
        -- 每一个触摸点的值包含:
        -- point.x, point.y 触摸点的当前位置
        -- point.prevX, point.prevY 触摸点之前的位置
        -- point.id 触摸点 id,用于确定触摸点的变化

        if event.name == "began" then
            -- 在单点触摸模式下:在触摸事件开始时,必须返回 true
            -- 返回 true 表示响应本次触摸事件,并且接收后续状态更新
            print("new element")
            return true
        end
    end)