添加一个Imageview背景为何不能拦截触屏事件

如题,代码如下

ImageView* bgView = ImageView::create();
bgView->setColor(ccc3(0,0,0));
bgView->setOpacity(175);
bgView->setTextureRect(CCRectMake(0,0,getWinSize().width,getWinSize().height));
bgView->setPosition(getWinCenter());
bgView->setTouchEnabled(true);
bgView->setEnabled(true);
addChild(bgView, -1);

你好,你是指imageView下面还有能接受事件的东西,把imageView开始触摸放到上面不能屏蔽下面的触摸吗?

是的,跟imageview同一touchgroup里的button就可以屏蔽掉

按钮的事件优先级是很高的,所以能够屏蔽,所以你需要设置一下这个imageView的响应事件优先级imageView->setTouchPriority(-200);(值越小优先级越高) 应该还需要在touchBegin里面return true来吞噬事件。:7::7:

额,imageView没有setTouchPriority这个方法啊

首先扫盲一下,cocostudio的事件分发没有优先级一说,另外TouchGroup的事件优先级也不是很高,其优先级为0;
cocostudio的事件分发机制,你可以这么理解:TouchGroup可以理解成一个触摸层(cocostudio的事件代理层 ),它在touchs事件这个主循环里面接受事件,然后分发给Widget,任何继承自Widget都可以接受事件(只要setTouchEnabled(true)即可),
然后添加事件处理函数,使用addTouchEventListener;
如果你想屏蔽掉cocos2dx的CCMenu的事件,很显然它的优先级远远高于TouchGroup,你那样简单的设置肯定屏蔽不了;
如果想屏蔽cocostudio的事件,类似模态对话框,很简单在编辑器里面加一个层容器设置为交互,即可搞定。

setTouchEnabled true 把这个开启就好了。默认图片是不接受点击事件的。我也是无聊测试出来的。哈哈