Cocos2d-x 3.0 Layer中加入Layout,事件监听无效了

我用的是Cocos2d-x 3.0
在我的一个Layer的init方法中,我加入了

auto listener = EventListenerTouchAllAtOnce::create();
listener->onTouchesBegan = CC_CALLBACK_2(PinchZoomLayer::onTouchesBegan, this);
listener->onTouchesMoved = CC_CALLBACK_2(PinchZoomLayer::onTouchesMoved, this);
listener->onTouchesEnded = CC_CALLBACK_2(PinchZoomLayer::onTouchesEnded, this);
listener->onTouchesCancelled = CC_CALLBACK_2(PinchZoomLayer::onTouchesCancelled, this);

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

//上面的代码可以正常工作,事件也可以触发

//加入下面的代码之后,事件就不被触发了,我重新create一个layer,把layout放进去,也不行。这样做有什么问题么?
auto layout = static_cast<cocos2d::ui::Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("SomeUI.json"));
this->addChild(layout);

好迷茫的感觉,请大家帮忙。

SomeUI.json 你应该控制这个JSON的尺寸,应该是透明的地方把点击事件取到了.

我另外用一个layer来装着这个layout,也不行

不是另一个Layer的问题,是你在cocostudio中把这个"SomeUI.json"的尺寸设置的过大,在cocostudio的属性里可以更改,把多余的删去就可以了。

楼主您好,请问你是一旦加载cocostudio做的UI界面就不能够响应事件了么?

你好。是的,我随便加载其他的layer是没有问题的

是的 我昨天发的帖子也提到这个问题了 帖子地址 http://www.cocoachina.com/bbs/read.php?tid=197606

点击事件确实是被Layout给截获了, 版主回答说可以修改触摸优先级来解决 ,楼主可以试试,我还没试过

请参考楼上提出的所指向的帖子:http://www.cocoachina.com/bbs/read.php?tid=197606

触摸优先级的话已经使用addEventListenerWithFixedPriority -1000了, 貌似还是无法解决

哪还有一种可能是 你的层结构比较乱,导致事件被其他无关控件拦截。