'함수'에 해당되는 글 1건
- 2017.04.06 [C++] 이벤트 콜백 함수(Button)만들기! 1
2017. 4. 6. 13:21
안녕하세요. 게임 개발자 놀이터 입니다.
C#에서 자주썻던 이벤트 콜백 함수를 C++에서 사용하고 싶어서 알아봤습니다.
여러번 실패 끝에 성공해서 이곳에 공유하려고 합니다~
코드먼저 보시죠!
헤더 파일입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Button : public CSprite { public: Button(); ~Button(); private: typedef std::function<void()> Event; //인수가 없는것 short state; Event OnClick; Event OnMouseOver; Event OnMouseOut; public: void SetOnClick(Event Function); void SetOnMouseOver(Event Function); void SetOnMouseOut(Event Function); virtual void MouseEvent(DIMOUSESTATE MouseState) override; }; | cs |
여기서 상속받는 CSprite와 가상함수 MouseEvent는 무시하셔도됩니다. ( 제가 만든 엔진에 일부입니다..)
다음은 소스 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | Button::Button() { state = 0; OnClick = NULL; OnMouseOver = NULL; OnMouseOut = NULL; } Button::~Button() { } void Button::SetOnClick(Event Function) { OnClick = std::move(Function); } void Button::SetOnMouseOver(Event Function) { OnMouseOver = std::move(Function); } void Button::SetOnMouseOut(Event Function) { OnMouseOut = std::move(Function); } | cs |
음.. 소스는 딱히 볼게 없군요!
std::move로 넣어줘야 한다는것 정도!?
그럼 적용법을 알아볼까요.
1 2 3 4 5 6 7 8 9 10 11 12 | void CTestScene::TestFunction() { CCLog("버튼 테스트 함수 호출!"); } void CTestScene::ButtonInit() { ButtonTest = new Button(); ButtonTest->SetOnClick(std::bind(&CTitleScene::TestFunction, this)); m_default_Layer->AddChild(ButtonTest); } | cs |
여기서 중요한 부분은 9번째줄이네요
std::bind로 넘겨주는것입니다.
음.. 뭐랄까.. 무언가 만들었다기보단 있는 기능을 사용한거라 글을 적기 애매하네요.
질문은 댓글로 부탁드려요
'프로그래밍 > Language' 카테고리의 다른 글
[Python] UnicodeEncodeError: 'cp949' 에러 (1) | 2019.10.04 |
---|---|
[Python] 파이썬 프로그래밍 -01 ATOM 설치 (Python) (0) | 2019.10.04 |
[C언어] 변수 선언시 저장 공간에 대하여 (0) | 2017.03.29 |
[C#] C++에서 사용하는 typedef , C#에서 사용할 수 없을까? (0) | 2016.12.12 |
[C++] Inline 함수에 대하여! (0) | 2016.12.05 |