在C++ 中,事件分发机制包括
触摸事件: EventListenerTouchOneByOne、EventListenerTouchAllAtOnce
鼠标响应事件: EventListenerMouse
键盘响应事件: EventListenerKeyboard
加速计事件: EventListenerAcceleration
自定义事件: EventListenerCustom
物理碰撞事件: EventListenerPhysicsContact
游戏手柄事件: EventListenerController
而在 Quick 中里注册触摸有两种方式,首先我们看第一种
第一种,使用 addNodeEventListener
local sp = cc.Sprite:create("GreenButton.png")
sp:setPosition(cc.p(480,320))
self:addChild(sp)
sp:setTouchEnabled(true)
sp:setTouchSwallowEnabled(false)
sp:addNodeEventListener(cc.NODE_TOUCH_EVENT, function ( event )
-- dump(event)
print(event.x .." ," .. event.y)
if event.name == "ended" then
print("ended")
elseif event.name == "began" then
print("began")
return true
end
end)
第二种,使用 EventDispatcher 进行注册
1、使用步骤
-- 1.获取事件分发器 : EventDispatcher
local dispatcher = cc.Director:getInstance( ):getEventDispatcher( )
-- 2.创建事件监听器 : EventListener(例如单点触摸)
local listener = cc.EventListenerTouchOneByOne:create( )
-- 3.注册事件响应函数 : registerScriptHandler
-- hander :响应函数
-- type : 事件类型
listener:registerScriptHandler(hander,type)
-- 4.在事件分发器中,添加监听器。事件响应委托为 self
dispatcher:addEventListenerWithSceneGraphPriority(listener,self)