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