Cocos2dx Lua添加自定义监听事件(点击穿透)
在使用cocos2dx古老的ui编辑器时,当按钮的上方需要添加一个层容器去显示一些其他东西的同时,还需要相应点击按钮的事件。需要把层容器的属性中的【交互】勾选去掉,这样,层容器在被点击的时候是直接将事件传递给下面的节点的。
如果想要在层容器上拦截点击事件,即不响应下方的按钮的话。一种方法是勾选编辑器中的【交互】(具体原因并不明确,大概是有“交互”属性的节点,会自动添加一个事件监听吧)。还有一种方式就是为层容器添加事件监听:
local layer = 层容器 --实现两个事件的方法 local function onTouchBegan(touch, event) return true end local function onTouchEnded(touch, event) return true end local listener = cc.EventListenerTouchOneByOne:create() -- 注册两个回调监听方法,至少需要begin和end listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN ) listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED ) local eventDispatcher = layer:getEventDispatcher()-- 事件派发器 -- 绑定触摸事件到层当中 listener->setSwallowTouches(true) --不向下触摸 eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)
这里需要注意三点:
- 监听事件需要至少实现began和end
- 监听事件需要根据具体情况去返回ture或者false
- setSwallowTouches(true)吞噬监听事件
http://www.cnblogs.com/lipeil/p/6293337.html
http://blog.csdn.net/roy__luo/article/details/48062177
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭