--方式一
function StartScene:getMousePos()
local function onTouchBegan(touch, event)
local location = touch:getLocation()
return true
end
local function onTouchEnded(touch, event)
end
local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)
self._touchListener = listener
end
--取消触摸事件
function StartScene:unregisterTouchListener()
self:getEventDispatcher():removeEventListener(self._touchListener)
self._touchListener = nil
end
调用:self:getMousePos()
注意:在使用完事件后(切换场景对象等情况)一定要取消触摸事件,否则会报错。调用:self:unregisterTouchListener()
--方式二 (其实是一个方式,只是函数调用的方式不同,在这里用了:定义和调用函数)
--注册触摸事件
function StartScene:registerTouchListener()
local listener = cc.EventListenerTouchOneByOne:create()
--给触摸监听函数设置吞没事件,使得触摸上面的层的时候事件不会向下传递,true表示不向下触摸
--简单点来说,比如有两个sprite ,A 和 B,A在上B在下(位置重叠),触摸A的时候,B不会受到影响
listener:setSwallowTouches(true)
listener:registerScriptHandler(function(touch, event)
self:onTouchBegan(touch, event)
end, cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(function(touch, event)
self:onTouchEnded(touch, event)
end, cc.Handler.EVENT_TOUCH_ENDED)
self:getEventDispatcher():addEventListenerWithFixedPriority(listener, self)
self._touchListener = listener
end
--鼠标点击回调函数began
function StartScene:onTouchBegan(touch, event)
local touchPos = touch:getLocation() --获取鼠标位置
return true
end
--鼠标点击回调函数ended
function StartScene:onTouchEnded(touch, event)
end
--取消触摸事件
function StartScene:unregisterTouchListener()
self:getEventDispatcher():removeEventListener(self._touchListener)
self._touchListener = nil
end
调用:self:registerTouchListener()
注意:在使用完事件后(切换场景对象等情况)一定要取消触摸事件,否则会报错。调用:self:unregisterTouchListener()