关于事件响应的问题

是这样的,项目里用c++实现了一个层(layer) 把这个层封装成了 lua接口 在lua的场景初始化中
加入这个层,然后加入了一个lua的UI,如代码所示

function GameScene:ctor()

    local world =test.TestScene:create()
    self:addChild(world)--这个就是c++实现的layer

cc.ui.UIPushButton.new({normal = "image/start1.png",pressed = "image/start2.png",})
        :onButtonClicked(function (  )
            print("start")
            app:enterScene("MainScene", nil, "splitRows", 1.0)
        end)
        :pos(display.cx/2,display.cy)
        :addTo(self)

end

问题是这样的,我在c++的layer里增加了如下的事件监听

listener->onTouchBegan = CC_CALLBACK_2(CMagicView::onTouchBegan, this);
    listener->onTouchMoved = CC_CALLBACK_2(CMagicView::onTouchMoved, this);
    listener->onTouchEnded = CC_CALLBACK_2(CMagicView::onTouchEnded, this);

    //_eventDispatcher->addEventListenerWithFixedPriority(listener, -10);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);

导致我在lua里增加的UI无论如何也收不到触摸事件,事件全部被c++的事件监听处理掉了,怎么破
我调试了CCEventDispatcher.cpp的事件分发接口,lua自己的UI事件貌似不是通过这个分发的,完全没有头绪
请大神帮忙~~

可能是你加的那个layer优先级 和吞噬事件参数的问题。。。

另外quick 自作聪明的在cocos2dx原生触屏机制上继续写了一堆分发事件的代码, 包括按显示层级 显示范围 , bounding合并 等等。。 包括quick层的 注册按下监听函数中的return false 和 原生c++的return false 经我测试根本不是一个东西, 前者 只影响控件本身的触屏事件, 后者可以冒泡影响到其他控件。, 通过查源码就发现坑了。。。quick的监听函数 只是在lua层包装的。。不会影响到c++层的其他控件

坑多谨慎 习惯就好, 有大神的话也可以解释一下

应该不是吞噬参数的问题,我把自己的C++函数监听函数全部设置成return true 并且也允许消息向下传递,再说我在lua上把UI的层级添加到了1层。我看了下quick的源代码quick 是通过 LuaTouchEventManager 这个类来实现事件监听的LuaTouchEventManager这个是个layer 在初始化的时候 用 _eventDispatcher->addEventListenerWithFixedPriority(_touchListener, -1); 这个加入到了_eventDispatcher 里,调试的时候 在CCEventDispatcher.cpp 里如果没有加入自定义的场景
auto oneByOneListeners = getListeners(EventListenerTouchOneByOne::LISTENER_ID);
这个oneByOneListeners 里的列表就是有的 ,加入了自定义的场景 这个里就空了,调试了半天也不知道是谁在哪里清空了监听

你把那个-10改成10看看能用么, 如果能用就说明是吞噬的问题

找到问题的原因了,不知道这个地方是不是bug,还是就是这样设计的,我去问下 ,感觉像是cocos写反了一个逻辑