您的位置:首页 > 移动开发 > Cocos引擎

cocos layer触摸事件不响应的问题

2017-12-21 12:02 1181 查看
今天做点击头像弹出人物详细信息面板,不点击关闭按钮,直接点击屏幕其他地方关闭的功能。在人物信息Layer添加了触屏事件,onTouchBegan不响应。 最后在网上查了一圈资料,有人说是cocos studio的问题,我试了一下,果然是,现在记录一下。



勾选上了交互性选项的layer反而不能触发触摸事件,所以要想自己写触摸事件的layer,需要自己去编辑器里面把交互性勾选掉。

分析一下:

我原来的代码是给整个界面的layer绑定了触摸事件

//创建一个点击事件
m_pTouchListener = EventListenerTouchOneByOne::create();
m_pTouchListener->setSwallowTouches(true);//阻止触摸向下传递
m_pTouchListener->onTouchBegan = [&](Touch* touch, Event* event)
{
//逻辑
return true;
};
//把点击监听添加到监听序列中,因为只创建了一个监听,一个监听只能绑定到一个对象上,所以其他对象要使用监听则克隆
_eventDispatcher->addEventListenerWithSceneGraphPriority(m_pTouchListener, this);


这个时候,界面layer里面的各种控件,特别是里面有屏幕大小的其他layer的时候,这些layer在studio里默认setSwallowTouches(true),触摸事件在最上层就会被吞噬。所以在touch的回调没有触发。

解决方法除了在studio里面直接设置交互性,还可以把触摸事件直接绑定到指定layer而不是this上面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos 触摸事件