//创建空白精灵
Sprite* p=Sprite::create();p->setColor(Color3B::WHITE);p->setTextureRect(Rect(0,0,len,wid));
//创建遮盖层(即虽然可以点击,但却不做任何响应)
auto translucence = Sprite::create();
translucence->setColor(Color3B::WHITE);
translucence->setOpacity(150);
translucence->setTextureRect(Rect(0,0,size.width,size.height));
l->addChild(translucence);
translucence->setPosition(Vec2(size.width / 2, size.height / 2));
auto lis = EventListenerTouchOneByOne::create();
lis->setSwallowTouches(true);
lis->onTouchBegan = [](Touch* t, Event* e){
auto target = static_cast<Sprite*>(e->getCurrentTarget());
auto touchLocation = target->convertToNodeSpace(t->getLocation());
if (target->getBoundingBox().containsPoint(touchLocation))
CCLOG("s");
return true;
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(lis, translucence);
**使用setSwallowTouches(argc)// argc==true,两个重叠的精灵(添加在同一个父级容器里),触摸上面的精灵,下面的精灵将不会响应事件;
argc==false,下面的精灵将会响应事件。
使用时onTouchBegan的返回值必须为return true才起作用
**pauseEventListenersForTarget(node,true) //为true时,将会停止node(我测试的只有node为layer类型时才有效)本身以及其子节点的监听事件,也就不会响应事件,使用时通过有相应的点击事件来触发
resumeEventListenersForTarget (node,true) //起相反的作用