cocos layer触摸事件不响应的问题
2017-12-21 12:02
1181 查看
今天做点击头像弹出人物详细信息面板,不点击关闭按钮,直接点击屏幕其他地方关闭的功能。在人物信息Layer添加了触屏事件,onTouchBegan不响应。 最后在网上查了一圈资料,有人说是cocos studio的问题,我试了一下,果然是,现在记录一下。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/03/8b75d193204dd24c3ef79c764edc2266)
勾选上了交互性选项的layer反而不能触发触摸事件,所以要想自己写触摸事件的layer,需要自己去编辑器里面把交互性勾选掉。
分析一下:
我原来的代码是给整个界面的layer绑定了触摸事件
这个时候,界面layer里面的各种控件,特别是里面有屏幕大小的其他layer的时候,这些layer在studio里默认setSwallowTouches(true),触摸事件在最上层就会被吞噬。所以在touch的回调没有触发。
解决方法除了在studio里面直接设置交互性,还可以把触摸事件直接绑定到指定layer而不是this上面。
勾选上了交互性选项的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关于pageview嵌套listview,事件响应问题
- cocos2d-x js binding tips 1 使用cocosbuilder导入jsb后无法响应触摸的问题
- 有关按钮的触摸优先级和layer的触摸事件冲突问题
- cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题
- cocos2d-x 3.x 关于cocostudio的UI将事件吃掉,场景Layer无法响应手势的问题解决方法
- cocos2dx3.x使用cocostudio触摸事件不响应的奇葩问题
- iOS开发:UILabel无法响应点击事件的问题
- 解决父布局具有点击效果,但是子布局的Button不响应点击事件的问题
- 在一个webview里跳转到新的activity里,webview无法响应js事件的问题
- C#控件无法响应单击事件的问题
- 在Quick Cocos2d-x中给CocosStudio中导出的UI(Widget)控件增加触摸(touch)事件
- UIView无法响应点击事件问题分析
- Cocos2d-x游戏开发之2.x后弹出键盘后无法响应除键盘外的触摸事件解决
- windows phone grid无法响应事件的问题
- Cocos2d-x 中CCTableView and CCTableViewCell点击空白区域依然会响应单元格事件及reloadData()问题
- cocos 触摸双击事件的实现
- ListView的item点击事件不响应(你觉得应该响应的,但是就是没响应,而且不是代码问题)
- cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate
- android listview 和button 共存的事件响应问题。
- 父布局与子布局控件的实现响应点击事件冲突问题。