Контрольные анимации
Контрольные анимации — это распространённый вид анимаций, который используется для входа и выхода из сцены, украшения пользовательского интерфейса и привлечения внимания пользователя.
1. Типы анимаций
AWTK поддерживает следующие типы анимаций:
Также можно использовать другие числовые свойства, такие как x/y/w/h и т. д.
2. Основные характеристики
3. Использование
Метод 1: через функцию widget_create_animator
Пример:
widget_create_animator(image1, "opacity(to=0, duration=500, yoyo_times=1000)");
widget_pause_animator(image1, "opacity");
widget_pause_animator(NULL, NULL);
widget_start_animator(NULL, NULL);
По умолчанию анимация запускается автоматически после создания и завершается автоматически. Можно указать auto_start=false, чтобы запретить автоматический запуск после создания, и указать параметр auto_destroy=false, чтобы предотвратить автоматическое завершение при завершении анимации (анимация будет автоматически завершена при уничтожении элемента управления).
Функции для создания, воспроизведения, паузы, остановки, установки коэффициента времени и уничтожения анимации:
/**
* @method widget_create_animator
* Создаёт анимацию.
* Если не указано auto_start=false, анимация запустится автоматически после создания.
* Если не указано auto_destroy=false, анимация завершится автоматически после воспроизведения.
* Формат параметров аналогичен вызову функции, например:
* opacity(from=0, to=255, yoyo_times=1000, duration=1000)
* move(x_from=10, x_to=100, y_from=10, y_to=100, duration=1000)
* См.: https://github.com/zlgopen/awtk/blob/master/docs/widget_animator.md
*
* @annotation ["scriptable"]
* @param {widget_t*} widget Элемент управления.
* @param {const char*} animation Параметры анимации.
*
* @return {ret_t} Возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_create_animator(widget_t* widget, const char* animation);
/**
* @method widget_start_animator
* Воспроизводит анимацию.
* 1. widget = NULL: воспроизвести все анимации с именем name.
* 2. name = NULL: воспроизвести все связанные с widget анимации.
* 3. widget и name оба равны NULL: воспроизвести все анимации.
*
* @annotation ["scriptable"]
* @param {widget_t*} widget Элемент управления.
* @param {const char*} name Имя анимации.
*
* @return {ret_t} Возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_start_animator(widget_t* widget, const char* name);
/**
* @method widget_set_animator_time_scale
* Устанавливает коэффициент времени анимации, <0: время возвращается назад, <1: время замедляется, >1 время ускоряется.
* 1. widget = NULL: установить коэффициент времени для всех анимаций с именем name.
* 2. name = NULL: установить коэффициент времени для всех связанных с widget анимаций.
* 3. widget и name оба равны NULL: установить коэффициент времени для всех анимаций.
*
* @annotation ["scriptable"]
* @param {widget_t*} widget Элемент управления.
* @param {const char*} name Имя анимации.
* @param {float_t} time_scale Коэффициент времени.
*
* @return {ret_t} Возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_set_animator_time_scope(widget_t* widget, const char* name, float_t time_scale);
/**
* @method widget_pause_animator
* Ставит анимацию на паузу.
* 1. widget = NULL: поставить на паузу все анимации с именем name.
* 2. name = NULL: поставить на паузу все связанные с widget анимации.
* 3. widget и name оба равны NULL: поставить на паузу все анимации.
*
* @annotation ["scriptable"]
* @param {widget_t*} widget Элемент управления.
* @param {char*} name Имя анимации.
*
* @return {ret_t} Возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_pause_animator(widget_t* widget, const char* name);
/**
* @method widget_stop_animator
* Останавливает анимацию (свойства элемента управления возвращаются к исходному состоянию).
* 1. widget = NULL: остановить все анимации с именем name.
* 2. name = NULL: остановить все связанные с widget анимации.
* 3. widget и name оба равны NULL: остановить все анимации.
*
* @annotation ["scriptable"]
* @param {widget_t*} widget Элемент управления.
* @param {char*} name Имя анимации.
*
* @return {ret_t} Возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_stop_animator(widget_t* widget, const char* name);
/**
* @method widget_destroy_animator
* Уничтожает анимацию.
* 1. widget = NULL: уничтожить все анимации с именем name.
* 2. name = NULL: уничтожить все связанные с widget анимации.
* 3. widget и name оба равны NULL: уничтожить все анимации.
*
* @annotation ["scriptable"]
* @param {widget_t*} widget Элемент управления.
* @param {char*} name Имя анимации.
*
* @return {ret_t} Возвращает RET_OK в случае успеха, иначе — ошибку.
*/
ret_t widget_destroy_animator(widget_t* widget, const char* name);
Способ 2: в XML указать параметры анимации
Формат параметров анимации аналогичен вызову функции. Несколько параметров разделяются символом «;». Например:
<button name="inc_value" text="Inc" animation="opacity(from=0, to=255, yoyo_times=1000, duration=1000)" />
<button name="dec_value" text="Dec" animation="move(x_from=10, x_to=100, y_from=10, y_to=100, duration=1000);opacity(from=0, to=255, yoyo_times=1000, duration=1000)" />
Этот метод является наиболее простым, в дальнейшем можно управлять анимацией по имени в программе, запускать и ставить на паузу анимацию.
Способ 3: прямое использование (больше не рекомендуется)
При использовании анимации элементов управления обычно необходимо выполнить четыре шага: создать анимацию, задать параметры, установить режим и запустить анимацию. Например:
animator = widget_animator_move_create(image, 1000, delay, EASING_SIN_INOUT);
widget_animator_move_set_params(animator, image->x, image->y,
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )