7. Ecore_Timer
이번에 만들고 있는 게임은 처음에 음계를 알려주고, 그 음계에 맞게 똑같이 쳐야 하는 게임입니다.
처음에 음계를 알려주기 위해서는 일정 간격으로 음계를 하나씩 재생시켜야 하는데요,
일정 간격대로 함수가 호출이 되는 ecore_timer에 대해 알아보도록 하겠습니다.
(1) Ecore_Timer 사용법
Ecore Timer의 사용법은 간단합니다.
- 우선 ecore_timer_add()함수를 통해 일정간격으로 호출될 콜백함수를 등록합니다.
1 | Ecore_Timer* ecore_timer_add (double in, Ecore_Task_Cb func, const void * data ) | cs |
- in : 호출 간격(단위 : 초)
- func : 콜백함수
- data : 전달할 데이터
- Ecore_Timer를 반환하여 timer를 관리할 수 있습니다.
- 콜백함수 원형
1 2 3 4 | Eina_Bool my_func(void *data) { return ECORE_CALLBACK_RENEW; } | cs |
- 콜백함수 등록 시 전달한 data값을 인수로 받으며, return값으로 True나 False값을 반환합니다.
- True값 리턴 시 반복 수행, False값 리턴 시 중지
- pause 함수
1 | ecore_timer_freeze (Ecore_Timer *timer) | cs |
- resume 함수
1 | ecore_timer_thaw (Ecore_Timer *timer) | cs |
(2) 게임 적용
- 먼저 5개의 음계를 저장할 인트형 배열과 배열을 가르킬 변수를 선언 후, 타이머를 관리할 Ecore_Timer를 선언합니다.(헤더파일)
1 2 3 | int idx; Ecore_Timer *timer; int quest[5]; | cs |
- 5개의 음계를 랜덤으로 생성 후 ecore_timer 콜백함수를 등록합니다.(app_create함수)
1 2 3 4 5 6 7 | idx=0; //5개의 음계를 저장 for(int i=0; i<5; i++) quest[i] = rand()%7; //timer 콜백함수 등록-1초간격으로 timer_quest호출 timer = ecore_timer_add(1, timer_quest, ad); | cs |
- 콜백함수는 아래와 같이 설정합니다.
- 1초간격으로 quest배열에 설정된 변수만큼 재생하게 됩니다.(TRUE를 반환함으로서 반복재생)
- 5개를 넘었을 땐, ECORE_CALLBACK_CANCEL(FALSE)를 반환함으로 호출을 그만합니다.
1 2 3 4 5 6 7 8 9 10 11 12 | Eina_Bool timer_quest(void *data) { if(idx<5) { play_audio(player[quest[idx++]]); return ECORE_CALLBACK_RENEW; } else { return ECORE_CALLBACK_CANCEL; } } | cs |
'Software Development > Tizen' 카테고리의 다른 글
[TIZEN]13. 타이젠 이미지 삽입 (0) | 2015.12.26 |
---|---|
[TIZEN]12. 타이젠_간단한게임 만들기6_Animator (0) | 2015.12.26 |
[TIZEN]10. 타이젠_간단한게임 만들기4_사운드 출력 (0) | 2015.12.25 |
[TIZEN]9. 타이젠_간단한게임 만들기3_이벤트 작성 (0) | 2015.12.25 |
[TIZEN]8. 타이젠_간단한게임 만들기2_레이아웃 구성 (0) | 2015.12.25 |