Software Development/Tizen

[TIZEN]12. 타이젠_간단한게임 만들기6_Animator

huiyu 2015. 12. 26. 14:59

8. Ecore_Animator

- 게임에 효과를 주기 위해 애니메이션을 넣어보도록 하겠습니다. 

사각형 터치를 하였을 때 애니메이션이 나오도록 해보겠습니다.


애니메이션은 타이머와 사용방법이 같습니다. 콜백함수에 등록하고 콜백함수에서 원하는 애니메이션을 수행하면 됩니다.

 - func : 콜백함수, data: 전달값

1
2
3
4
5
6
ecore_animator_add (Ecore_Task_Cb func, const void *data)
//콜백함수
Eina_Bool timer_quest(void *data)
{
    return ECORE_CALLBACK_RENEW;
}
cs


그러나 애니메이션은 일정시간만 재생이 필요한 경우가 존재하는데요, timline과 함께 설정할 수 있는 함수도 제공하고 있습니다.

1
2
3
4
5
6
7
8
9
10
 
//실행시간과 함께 콜백함수 등록
ecore_animator_timeline_add (double runtime, Ecore_Timeline_Cb func, const void *data)
//콜백함수
 static Eina_Bool
 _do_animation(void *data, double pos)
 {
    evas_object_move(data, 100 * pos, 100 * pos);
    ... do some more animating ...
 }
cs
 - runtime : 수행시간 , func : 콜백함수, data : 전달값

 - 콜백함수의 경우 pos를 통해 현재 전체 수행시간 중 현재시간을 알 수 있습니다.



실제 게임에 적용해 보면,

사각형 이벤트 콜백함수(clicked_rect)에 클릭이 발생했을 경우 animation을 등록합니다.

1
ecore_animator_timeline_add(0.2, _do_animation, ad->rect[num]);
cs

다음으로 콜백함수를 통해 사이즈가 변경하는 애니메이션을 적용합니다. (pos값은 0~ 변경된 값이 와서 애니메이션이 가능)

1
2
3
4
5
6
7
static Eina_Bool
_do_animation(void *data, double pos)
{
    Evas_Object *rect = data;
    evas_object_size_hint_min_set(rect, 100230*pos);
    return ECORE_CALLBACK_RENEW;
}
cs

위치뿐만 아니라 evas_object_color_set()함수나 evas_object_move()함수 등을 통해 색상, 위치 애니메이션 적용이 가능합니다.


실행시켜 보면 사각형을 터치했을 때 애니메이션이 나타나는 것을 볼 수 있습니다.



728x90