当我们在用cocos2d-x引擎进行游戏设计时,很多时候有这样一种情况
我们需要创建一个层A,覆盖住层B,当我们在层A上进行触摸操作时,可能会对层B进行操作。所以我们需要做的是
当层A覆盖住层B时,屏蔽层B的touch事件
摘自某文章
layer屏蔽touch事件
此处有个问题,在popLayer层上触摸,你会发现底层的GameScene会响应。这就需要对popLayer进行touch事件处理屏蔽,不应该传递到底层。
- 在inin方法中注册touch事件监听
12
3
4
5
6
7
8
//设置触摸事件监听
auto
touchListener = EventListenerTouchOneByOne::create();touchListener->onTouchBegan
= CC_CALLBACK_2(PopLayer::onTouchBegan,this
);
touchListener->onTouchMoved
= CC_CALLBACK_2(PopLayer::onTouchMoved,this
);
touchListener->onTouchEnded
= CC_CALLBACK_2(PopLayer::onTouchEnded,this
);
_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener,
this
);
//
设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞没touchListener->setSwallowTouches(
true
);
- 空实现touch事件的监听函数
12
3
4
5
6
7
8
9
10
bool
GameOverLayer::onTouchBegan(Touch* touch, Event* event){
return
true;
}
void
GameOverLayer::onTouchMoved(Touch* touch, Event* event){
}
void
GameOverLayer::onTouchEnded(Touch* touch, Event* event){
}