Table Of Contents
Animation¶
Animation
и AnimationTransition
используются для создания анимации
свойств Widget
. Вы должны указать как минимум имя свойства и целевое значение. Для использования анимации следуйте этим шагам:
Настройте объект анимации
Используйте объект анимации для виджета
Простая анимация¶
Чтобы выполнить анимацию позиции x или y виджета, просто укажите целевые значения x/y, где вы хотите разместить виджет в конце анимации:
anim = Animation(x=100, y=100)
anim.start(widget)
Анимация будет длиться 1 секунду, если не указано duration
.
Когда вызывается anim.start(), виджет будет плавно перемещаться из текущего
положения x/y в (100, 100).
Анимация нескольких свойств и переходов¶
Вы можете анимировать несколько свойств и использовать встроенные или пользовательские функции перехода с помощью transition
(или сокращенной записи t= shortcut). Например, чтобы выполнить анимацию позиции и размера с использованием перехода 'in_quad':
anim = Animation(x=50, size=(80, 80), t='in_quad')
anim.start(widget)
Обратите внимание, что параметр t= может быть строковым именем метода в классе AnimationTransition
или вашей собственной функцией анимации.
Последовательная анимация¶
Для объединения анимаций последовательно используйте оператор ‘+’. В следующем примере выполнится анимация до x=50 за 1 секунду, затем анимация размера до (80, 80) в течение следующих двух секунд:
anim = Animation(x=50) + Animation(size=(80, 80), duration=2.)
anim.start(widget)
Параллельная анимация¶
Чтобы объединить анимации параллельно, используйте оператор ‘&’. В следующем примере позиция будет анимирована до (80, 10) за 1 секунду, параллельно с этим размер будет анимирован до (800, 800):
anim = Animation(pos=(80, 10))
anim &= Animation(size=(800, 800), duration=2.)
anim.start(widget)
Помните, что создание перекрывающихся анимаций для одного и того же свойства может привести к
неожиданным результатам. Если вы хотите применить несколько анимаций к одному
свойству, вы должны либо запланировать их последовательно (с помощью оператора ‘+’ или
используя обратный вызов on_complete) или отменить предыдущие анимации с помощью метода
cancel_all
.
Повторяющаяся анимация¶
Добавлено в версии 1.8.0.
Примечание
В настоящее время это реализовано только для анимаций типа 'Sequence' (Последовательность).
Чтобы установить анимацию на повторение, просто установите свойство Sequence.repeat
в значение True:
anim = Animation(...) + Animation(...)
anim.repeat = True
anim.start(widget)
Для управления потоком анимаций, таким как остановка и отмена, используйте уже имеющиеся методы в модуле анимаций.
- class kivy.animation.Animation(**kw)[исходный код]¶
Базовый класс:
kivy.event.EventDispatcher
Создает анимацию, которое можно использовать для анимации виджета.
- Parameters
- duration или d: float, по умолчанию 1.
Продолжительность анимации в секундах.
- transition или t: str или функция
Функция перехода для анимации свойств. Может быть именем метода из
AnimationTransition
.- step или s: float
Шаг в миллисекундах анимации. По умолчанию 0, что означает, что анимация обновляется для каждого кадра.
Чтобы обновлять анимацию реже, установите значение шага в виде числа с плавающей точкой. Например, если вы хотите анимировать с частотой 30 кадров в секунду, используйте s=1/30.
- Events
- on_start: animation, widget
Срабатывает, когда начинается анимация на виджете.
- on_complete: animation, widget
Срабатывает, когда анимация завершается или останавливается на виджете.
- on_progress: animation, widget, progression
Срабатывает, когда изменяется ход анимации.
Изменено в версии 1.4.0: Добавлен параметр s/step.
Изменено в версии 1.10.0: Значение по умолчанию для параметра step было изменено с 1/60. на 0.
- property animated_properties¶
Возвращает свойства, используемые для анимации.
- cancel(widget)[исходный код]¶
Отменяет анимацию, примененную к виджету. Тот же эффект, что и у
stop
, за исключением того, что событие on_complete не сработает!Добавлено в версии 1.4.0.
- static cancel_all(widget, *largs)[исходный код]¶
Отменяет все анимации, касающиеся конкретного виджета / списка свойств. См.
cancel
.Пример:
anim = Animation(x=50) anim.start(widget) # а затем Animation.cancel_all(widget, 'x')
Добавлено в версии 1.4.0.
Изменено в версии 2.1.0: Если параметр
widget
равен None, то все анимированные виджеты будут целью и будут отменены. Если также указан параметрlargs
, анимация этих свойств будет отменена для всех анимированных виджетов.
- cancel_property(widgetprop)[исходный код]¶
Даже если анимация выполняется, удаляет свойство. Оно не будет дальше анимироваться. Если это было единственное/последнее анимируемое свойство, то анимация будет отменена (см.
cancel
)Добавлено в версии 1.4.0.
- property duration¶
Возвращает продолжительность анимации.
- have_properties_to_animate(widget)[исходный код]¶
Возвращает True, если у виджета еще остались свойства для анимации.
Добавлено в версии 1.8.0.
- start(widget)[исходный код]¶
Запускает анимацию на виджете.
- stop(widget)[исходный код]¶
Останавливает анимацию, примененную ранее к виджету, вызывая событие on_complete.
- static stop_all(widget*largs)[исходный код]¶
Останавливает все анимации, касающиеся конкретного виджета / списка свойств.
Пример:
anim = Animation(x=50) anim.start(widget) # а затем Animation.stop_all(widget, 'x')
- stop_property(widgetprop)[исходный код]¶
Даже если анимация выполняется, удаляет свойство. Оно не будет дальше анимироваться. Если это было единственное/последнее анимируемое свойство, то анимация будет остановлена (см.
stop
).
- property transition¶
Возвращает переход(transition) анимации.
- class kivy.animation.AnimationTransition[исходный код]¶
Базовый класс:
builtins.object
Набор функций анимации, используемых с объектом Animation. Функции плавности анимации перенесены в Kivy из проекта Clutter https://developer.gnome.org/clutter/stable/ClutterAlpha.html
Параметр progress в каждой функции анимации находится в диапазоне от 0 до 1.