반응형

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->removeChildmodalLayer );



GameScene에 멤버 함수로 넣어도 되고 모든 Scene에서 사용하겠다고 하면 static으로 만들던 Global함수로 만들던 상관 없다.

Layer를 remove시키면 Modal Layer 자동으로 해제 된다.

모달 레이어를 간단하게 사용할 수 있는 방법이다.


반응형

+ Recent posts