在使用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)

这里需要注意三点:

  1. 监听事件需要至少实现began和end
  2. 监听事件需要根据具体情况去返回ture或者false
  3. setSwallowTouches(true)吞噬监听事件

http://www.cnblogs.com/lipeil/p/6293337.html

http://blog.csdn.net/roy__luo/article/details/48062177