1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wu_fuqi-WuKongAnimation

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_TWEEN.md 6.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 16:58 e521a89

Один из элегантных фреймворков для создания анимаций. Поддерживает прямой вызов функций и цепочечный вызов. Внутри использует Tween в качестве ядра анимации.

Использование анимации

Далее рассмотрим использование Tween-анимации.

Цепочечные и action-анимации (https://gitee.com/wu_fuqi/WuKongAnimation/blob/master/README.md) не рассматриваются в этом документе.

Создание многоразовой анимации Tween

Созданная анимация Tween может быть повторно запущена с помощью методов start() и stop(), и её можно использовать повторно.

// Объявляем объект класса Obj
class Obj {
    var alpha = 0
}

// Создаём объект obj
val obj = Obj()

// Заставляем значение «alpha» объекта obj изменяться от 0 до 1 за 1000 миллисекунд и запускаем анимацию
val tween = TweenManager.builder(obj)
                    .to(mutableMapOf("alpha" to 1))
                    .time(1000)
                    .start()

// Останавливаем анимацию obj
tween.stop()

// Удаляем текущую анимацию Tween, после удаления её нельзя использовать снова
tween.remove()

Создание одноразовой анимации Tween

Создаваемая анимация Tween является одноразовой, она автоматически удаляется после завершения выполнения, и нет необходимости вызывать метод remove() повторно.

// Объявляем объект класса Obj
class Obj{
    var alpha = 0
}

// Создаём объект obj
val obj = Obj()

// Заставляем значение «alpha» объекта obj изменяться от 0 до 1 за 1000 миллисекунд и запускаем анимацию
val tween = TweenManager.builderOne(obj)
                        .to(mutableMapOf("alpha" to 1))
                        .time(1000)
                        .start()

// Или можно использовать метод setExpire(true), чтобы создать одноразовую анимацию Tween
val tween = TweenManager.builder(obj)
                        .setExpire(true)
                        .to(mutableMapOf("alpha" to 1))
                        .time(1000)
                        .start()

Создание анимации Tween с заданным количеством повторов

Используйте repeat(1), чтобы установить количество повторов, repeat(-1) — бесконечное повторение.

// Объявляем объект класса Obj
class Obj{
    var alpha = 0
}

// Создаём объект obj
val obj = Obj()

// Заставляем значение «alpha» объекта obj изменяться от 0 до 1 за 1000 миллисекунд и запускаем анимацию
val tween = TweenManager.builderOne(obj)
// val tween = TweenManager.builder(obj)
                        .to(mutableMapOf("alpha" to 1))
                        // .repeat(-1) // Бесконечное повторение
                        .repeat(10) // 10 повторений
                        .time(1000)
                        .start()

Создание анимации Tween с эффектом пинг-понга

Чтобы установить эффект пинг-понга, используйте pingPong(true).

// Объявляем объект класса Obj
class Obj{
    var alpha = 0
}

// Создаём объект obj
val obj = Obj()

// Заставляем значение «alpha» объекта obj изменяться от 0 до 1 за 1000 миллисекунд и запускаем анимацию
val tween = TweenManager.builderOne(obj)
// val tween = TweenManager.builder(obj)
                        .to(mutableMapOf("alpha" to 1))
                        .pingPong(true) // Устанавливаем эффект пинг-понга
                        .time(1000)
                        .start()

События анимации Tween

TweenManager.builder(obj)
    .to(mutableMapOf("alpha" to 1))
    .time(1000)
    .pingPong(true)
    .repeat(-1)
    .on(TweenManager.EVENT_START) {
        // Анимация начинается
        Log.i(this::class.java.name, "Tween start")
    }
    .on(TweenManager.EVENT_RESTART) {
        // Анимация перезапускается
        Log.i(this::class.java.name, "Tween restart")
    }
    .on(TweenManager.EVENT_UPDATE) {
        // Ключевой кадр анимации, обычно около 60 кадров в секунду, зависит от системы.
        // Имя: частота кадров FPS
        Log.i(this::class.java.name, "Tween update")
    }
    .on(TweenManager.EVENT_ERPEAT) {
        // Вызывается при повторном выполнении анимации
        Log.i(this::class.java.name, "Tween repeat")
    }
    .on(TweenManager.EVENT_END) {
        // Вызов после выполнения анимации
        Log.i(this::class.java.name, "Tween end")
    }
    .on(TweenManager.EVENT_STOP) {
        // Вызывается, когда вызывается метод stop()
        Log.i(this::class.java.name, "Tween stop")
    }

Easing — функции замедления

Функции замедления вычисляются по ссылке на функции замедления в tween.js.

Эффект замедления (http://tweenjs.github.io/tween.js/examples/03_graphs.html) .to(mutableMapOf("alpha" to 1)) .time(1000) .easing(Easing.linear()) // Использование линейного метода замедления, по умолчанию используется линейный метод .start()

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wu_fuqi-WuKongAnimation.git
git@api.gitlife.ru:oschina-mirror/wu_fuqi-WuKongAnimation.git
oschina-mirror
wu_fuqi-WuKongAnimation
wu_fuqi-WuKongAnimation
master