最近要求人物信息界面不通过点击按钮关闭,而是点击屏幕任意位置关闭。
实现方法就是给界面添加触摸事件。
要是想实现点击所有位置都关掉界面,可以在界面的最上层盖上一层layer来响应事件。
要是想实现点击对话框以外的部分来关掉界面,可以在对话框的下面添加一层layer来响应,再让对话框的控件吞噬掉触摸,对话框本身就不会响应事件了。例子如下:
void XXX::createUI()
{
//最底层的一层layer,用于响应触摸事件
m_pTouchLayer = dynamic_cast<Layout*>(shareLoader->getChildByName("Panel_3"));
//创建一个点击事件
m_pTouchListener = EventListenerTouchOneByOne::create();
m_pTouchListener->setSwallowTouches(false);//阻止触摸向下传递
m_pTouchListener->onTouchBegan = [&](Touch* touch, Event* event)
{
return true