Ответ 1
Этот ответ оказывается устаревшим из-за изменений в LibGDX. Для актуальной документации см. страницу вики-страницы scene2d.
В LibGDX доступны различные доступные действия. Они находятся в пакете com.badlogic.gdx.scenes.scene2d.actions
. Я бы сказал, что есть 3 вида действий:
- Анимация
- Композитные действия
- Другие действия
Анимационные действия изменяют различные свойства вашего актера, такие как местоположение, вращение, масштаб и альфа. Это:
- FadeIn - изменяет альфу вашего актера от действующего альфа-актера до 1
- FadeOut - изменяет альфу вашего актера от действующего альфа-актера до 0
- FadeTo - изменяет альфу вашего актера от действующего альфа-актера до определенного значения
- MoveBy - перемещает ваш актер на определенную сумму.
- MoveTo - перемещает вашего актера в определенное место.
- RotateBy - вращает ваш актер на определенный угол
- RotateTo - вращает ваш актер на определенный угол
- ScaleTo - масштабирует ваш актер до определенного масштабного коэффициента.
Композитные действия объединяют несколько действий в одном действии:
- Параллельно - выполнять заданные действия параллельно - все действия сразу
- Последовательность - выполнение заданных действий последовательно - один за другим
Другие действия:
- Повторить - повторяет данное действие n-times
- Forever - повторяет данное действие навсегда
- Задержка - задержка выполнения заданного действия за определенное время
- Удалить - удаляет данный Актер со сцены
Каждое действие имеет статический метод $
, который создает экземпляр этого Action.
Пример создания анимационных действий:
MoveTo move = MoveTo.$(200, 200, 0.5f); //move Actor to location (200,200) in 0.5 s
RotateTo rotate = RotateTo.$(60, 0.5f); //rotate Actor to angle 60 in 0.5 s
Пример создания более сложной последовательности действий:
Sequence sequence = Sequence.$(
MoveTo.$(200, 200, 0.5f), //move actor to 200,200
RotateTo.$(90, 0.5f), //rotate actor to 90°
FadeOut.$(0.5f), //fade out actor (change alpha to 0)
Remove.$() //remove actor from stage
);
Анимация также позволяет указать Interpolator
. Существуют различные реализации:
- AccelerateDecelerateInterpolator
- AccelerateInterpolator
- AnticipateInterpolator
- DecelerateInterpolator
- LinearInterpolator
- OvershootInterpolator
Интерполятор Javadoc: Интерполятор определяет скорость изменения анимации. Это позволяет ускорить базовые эффекты анимации (альфа, масштаб, перевод, поворот), замедлить и т.д. Чтобы установить интерполятор в действие:
action.setInterpolator(AccelerateDecelerateInterpolator.$());
Когда у вас есть действие с готовым интерполятором, вы установите это действие для своего актера:
actor.action(yourAction);
Чтобы выполнить все действия, определенные для участников на сцене, вы должны вызвать stage.act(...) в методе рендеринга:
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();