[D_007] Touch event DATA_OLD/Cocos2d-x 기능성 게임 개발과정2014. 11. 19. 11:22
1) 클래스에 virtual 함수들을 등록
bool onTouchBegan(Touch* touch, Event* unused_event); //터치의 시작과 동시에 호출
//얘만 bool형임을 명심할것
+ 이 함수에서 return 값을 false로 할 경우, Began호출 후 이후의 Moved와 Ended가 호출되지 않음.
void onTouchMoved(Touch* touch, Event* unused_event); //터치한 채로 움직이는 중에 호출
void onTouchEnded(Touch* touch, Event* unused_event); //터치한 손을 뗄 때 호출
//Touch* touch : 터치와 관련된 정보들(좌표값 등)
//Event* unused_event : cocos2d에서만 사용되던 것. cocos2d-x에서는 사용되지않고 ios로 포팅할 때의 틀만 가지고 있음
//+ onTouchCancelled : 예기치 못한 상황(어플호출로 화면이 바뀐다거나)으로 터치가 취소될 때 호출
Listener를 생성한 뒤, 해당 리스너가 받는 onTouchBagan, onTouchMoved, onTouchEnded에 함수를 등록시켜준다. 즉, 리스너가 위의 행위를 감지하면 등록된 함수가 호출되는 방식
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
//onTouch함수들이 자동으로 인자를 2개를 받기때문에 CC_CALLBACK_2를 사용
+ 꼭 onTouchBegan과 같은 존재하는 함수만 가능한건 아니다.
사용자가 임의로 지정한 이름의 함수도 등록만 되면 똑같이 사용가능하다.
+ listener를 헤더에 있는 클래스 본체에 선언하여 사용하면, 화면전환등의 일이 일어났을 경우, 자동으로 리스너를 죽임과 동시에 이런저런 등록되어있는 것들 역시 일괄적으로 정리된다.
3) 이벤트 디스패쳐에 등록
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
//Director를 통해, 리스너를 이벤트디스패쳐에 등록해준다.
//[addEvent...]는 눈에 보이는 레이어 순서대로 터치 이벤트를 처리하라는 뜻.
+ 메뉴(버튼)와 터치의 차이점
메뉴는 눌렀다가 뗐을 때 동작을 하게 됨.
터치는 눌렀을 때, 움직일 때, 뗐을 때마다 각각 동작을 지정해줄 수 있음.
2) 멀티 터치
bool onTouchesBegan(const std::vector<Touch*>& touches, Event* unused_event);
//터치의 시작과 동시에 호출
void onTouchesMoved(const std::vector<Touch*>& touches, Event* unused_event);
//터치한 채로 움직이는 중에 호출
void onTouchesEnded(const std::vector<Touch*>& touches, Event* unused_event);
//터치한 손을 뗄 때 호출
'DATA_OLD > Cocos2d-x 기능성 게임 개발과정' 카테고리의 다른 글
[D_007] 터치 판정 예제 (0) | 2014.11.19 |
---|---|
[D_007] 충돌체크 및 예제 (0) | 2014.11.19 |
[D_006] 비행기 게임 예제 (0) | 2014.11.19 |
[D_005] Call Function (0) | 2014.11.17 |
[D_005] Action - Sequence, Spawn, DelayTime, Repeat, Ease (0) | 2014.11.17 |