우선순위
이벤트 캐치를 설명할때 우린 다른 리스너가 캐치하지 못하게 막는다 하였습니다.
이벤트가 어떻게 전달되는지 어떤 리스너에 먼저 도달하는지는 우선순위에 따라 결정되어집니다.
고정값 우선순위 는고정된 값을 사용하여 값이 낮은 리스너는 값이 높은 리스너보다 먼저 이벤트 전달받습니다.
씬그래프우선순위는 객체의 z-order를 따릅니다.
z-order값이 높은노드에 있는 리스너가 낮은값의 노드보다 먼저 이벤트를 전달받습니다.
Z-oder가 높은노드부터 그려지기때문에 이런 우선순위를 사용하는것은 터치 이벤트에 대한 응답을 보장합니다.
아래의 씬그래프가 기억나나요?이미지를 렌더링할때 A,B,C,D,E,F,G,H,I 순서대로 렌더링합니다.
씬그래프 우선순위를 사용할때 이벤트는 렌더링의 반대방향 즉 I, H, G, F, E, D, C, B, A 순으로 전달됩니다.
만약 하나의 이벤트가 발생하고 I 노드부터 전달받는다면 I노드가 이벤트를 캐치하고 더 이상 전달을 하지 않습니다.
이벤트가 캐치되지 않는다면 이벤트는 다시 H노드로 전달이되어집니다.
노드마다 같은 로직을 이벤트가 캐치될때까지 반복하거나 전달이 만료되면 이번에 발생한 이벤트는 종료됩니다.
출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/event_dispatcher/priority.html>
터치 이벤트
터치 이벤트는 핸드폰 게임에서 제일 중요한 이벤트입니다.이것은 생성하기 쉽고 여러종류의 기능을 제공합니다.
이제 터치 이벤트에 대해서 이해를 해봅시다.
당신이 모바일환경의 스크린을 터치하였을때 모바일기기는 터치를 감지하여 터치된 위치를 알게되고 터치한 내용을 알게된다음에 당신의 프로그램은 터치에 대한 어떠한작용을 합니다.
이것이 터치 이벤트입니다.
만약 당신이 터치를 통하여 스크린 아래에 있는 레이어개체를 컨트롤 하고 싶다면 우선순위를 사용해보십시오.
우선순위가 높은 개체부터 이벤트를 처리할겁니다.
터치 이벤트 리스너 생성하기:
C++
// Create a "one by one" touch event listener
// (processes one touch at a time)
auto listener1 = EventListenerTouchOneByOne::create();
// trigger when you push down
listener1->onTouchBegan = [](Touch* touch, Event* event){
// your code
return true; // if you are consuming it
};
// trigger when moving touch
listener1->onTouchMoved = [](Touch* touch, Event* event){
// your code
};
// trigger when you let up
listener1->onTouchEnded = [=](Touch* touch, Event* event){
// your code
};
// Add listener
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, this);
예제에서 우린 터치이벤트 리스너를 사용할때 3종류의 각기 다른 이벤트를 처리할수 있는것을 볼수 있습니다.
이벤트마다 발생하는 시기가 있습니다.
onTouchBegan 터치를 시작하였을때
onTouchMoved 스크린을 터치하면서 이동할때
onTouchEnded 터치를 종료하였을때
출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/event_dispatcher/touch.html>
'Cocos2d-x v3.17 > 고급 기능' 카테고리의 다른 글
[Cocos2d-x 고급기능]마우스 이벤트,커스텀 이벤트 (0) | 2018.08.11 |
---|---|
[Cocos2d-x 고급기능]키보드 이벤트,가속도계 이벤트 (0) | 2018.08.11 |
[Cocos2d-x 고급기능]이벤트 발생 매커니즘 소개 및 Listener (0) | 2018.08.11 |
[Cocos2d-x 고급기능]ParallaxNode 스크롤링 (0) | 2018.08.11 |
[Cocos2d-x 고급기능]ParticleSystem (0) | 2018.08.11 |