자작 게임도 잘 부탁드려요~

adsense



[cocos2d-x / 플래피위치] 사용자 정의 콜백





😭 자막이 잘못 들어갔습니다.
이번 영상의 제목은
[11강 사용자 정의 콜백] 입니다.

std::function과 람다식은 cocos2d-x의 기능이 아니라 c++에 정의된 문법입니다.
여기서는 cocos2d-x 개발에 필요한 정도만 다루겠습니다.

람다식은 이미 스케줄이나 터치 이벤트 구현할 때 다뤘는데
불필요한 클래스 정의나 함수 선언을 줄이기 위해 온갖 군데서 쓸 수 있으니까 유용합니다.
콜백이나 함수를 인자로 전달하는 모든 경우에 적절하게 쓸 수 있습니다.

람다식의 구조는
[](){ };
로 거칠게 요약할 수 있고,

[] <-외부에서 받아올 변수의 범위 (우리가 다룰 때는 굳이 신경쓰지 않아도 됩니다)
() <- 람다식에 전달할 인자
{} <- 람다식 몸통
이렇게 됩니다.

※인자와 몸통 사이에 리턴 타입을 정의하는데, 흔히 생략됩니다.


std::function은 함수를 객체로서 다루는 방법입니다.

실행할 함수를 객체로 만든다는 건 인자로 전달할 수 있다는 것이고,
인자로 전달받은 쪽에서는 필요할 때 이 인자를 함수 형태로 호출할 수 있습니다.

이번에 사용한 객체화 펑션은 리턴타입과 인수가 없는 형태인데요,
당연히 리턴타입이나 인수가 있는 형태를 정의할 수도 있습니다.

예를 들어
typedef std::function<void(int)> FUNC;
FUNC cb;
같이 정의했다면, 콜백 때 인수로 정수값을 하나 돌려줄 수 있습니다.
cb(0);
이런 식으로.

이런 형태는 팝업창을 만들었고 팝업창에 여러개의 버튼(예/아니오, 한국어/영어/일어/독일어 등등)이 있을 경우
어느 버튼을 눌렀는지 인수로 돌려줄 때 사용할 수 있습니다.

이때 콜백에서 받는 람다식은
[=](int ret){
if(ret==0)
{
.....
}
};
이런 식으로 기재하게 됩니다.




덧글

댓글 입력 영역


Books

Geek라이프

기초부터 시작하는 모형 전자공작
박성윤 저

사이토 나오키의 일러스트 첨삭 레슨 Before & After
사이토 나오키 저/박수현 역

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC