Game Scene에 터치 리스너 붙이고 게임을 하다 Pause나 Shop같은 Layer를 띄웠을 경우
Game Scene에 터치가 계속 먹어서 애를 먹은 적이 있다.
그래서 모달 레이어를 만드는 함수를 만들어 봤다.
cocos2d-x function
// 레이어(노드)를 모달로 만들어 주는 함수
void GameScene::modal_layer(cocos2d::Node *node)
{
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = [](Touch *touch,Event*event)->bool {
return true;
};
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addEventListenerWithSceneGraphPriority(listener, node);
}
사용 예
auto modalLayer = Layer::create();
modal_layer( modalLayer );
this->addchild( modalLeyer );
Modal Layer 해제
this->removeChild( modalLayer );
GameScene에 멤버 함수로 넣어도 되고 모든 Scene에서 사용하겠다고 하면 static으로 만들던 Global함수로 만들던 상관 없다.
'- cocos2d-x ' 카테고리의 다른 글
[ cocos2d-x 3.8.1 ] Label TTF Fontsize 변경 방법 및 AutoFontSize 방법 (2) | 2015.11.13 |
---|---|
[ cocos2d-x 3.8.1 ] 3.6에서 3.8.1로 업데이트 할 때 문제 발생 (0) | 2015.11.07 |
[ cocos2d-x 3.8 ] cocos2d-x 3.8 버전 사용시 문제점 (0) | 2015.10.25 |
[ cocos2d-x 3.6 ] Action함수 중 RemoveSelf 함수 활용 (0) | 2015.10.01 |
[ cocos2d-x 3.6 ] 간단하게 사용 가능한 Plugin SDKBOX 소개 (0) | 2015.08.30 |