在Cocos2dx中对精灵,层等Node有监听机制, 通过监听机制, 可以对用户的触摸事件进行响应, 下面介绍Cocos2dx的单击事件
单击类 : EventListenerTouchOneByOne
EventListenerTouchOneByOne 为Cocos2dx中单击响应的监听类, 其中拥有如下函数
local create() // 构造函数
local isSwallowTouches() // 返回是否为吞噬监听
// 吞噬监听 上层对象处理触摸事件并屏蔽下层对象的监听
local checkAvailable() // 返回监听是否可用
setSwallowTouches(local needSwallow) // 是否为吞噬触摸 needSwallow 为true的时候为吞噬
创建监听事件的过程:
// 1. 创建本地的单击监听对象 EventListenerTouchOneByOne , 调用Create
local listener = cc.EventListenerTouchOneByOne:create()
// 2. 设置为吞噬监听
listener:setSwallowTouches(true)
// 3. 绑定监听事件 通过registerScriptHandler函数
listener:registerScriptHandler(function (touch,event)
// do something
// 4. 返回true 之后可以执行EVENT_TOUCH_MOVED(触摸并移动)监听函数
return true
// 5. registerScriptHandler函数的第二个参数,
// EVENT_TOUCH_BEGAN 表示手接触屏幕
end,cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(function(touch, event)
// do something
return true
// EVENT_TOUCH_MOVED 表示触摸之后移动
end, cc.Handler.EVENT_TOUCH_MOVED)
listener:registerScriptHandler(function(touch,event)
// do something
return true
// EVENT_TOUCH_ENDED 表示手离开屏幕的时候
end,cc.Handler.EVENT_TOUCH_ENDED)
// 6. 创建本地管理监事件的对象
local eventDispatcher = self:getEventDispatcher()
// 7. 将新建的对象加入到本地监听事件中去
eventDispatcher:addEventListenerWithSceneGraphPriority(listener,self);
// 监听完成