Если вы здесь, то наверняка уже слышали о Лотти. Это отличный фреймворк от сотрудников AirBnB, который позволяет легко создавать легкие SVG-анимации в After Effects для использования в веб-приложениях и т. Д.
Вот как вы можете быстро настроить его как для React, так и для React Native, используя библиотеки react-lottie
и lottie-react-native
соответственно. Есть и другие способы использования Lottie, но мы сосредоточимся здесь только на этих двух библиотеках.
Это не касается того, как создавать анимацию Lottie в After Effects, но я буду рад подробно рассказать об этом процессе, если у вас есть какие-либо вопросы по этому поводу - не стесняйтесь оставлять мне комментарий ниже или связываться со мной в Twitter @atyreefinch. Даже если вы не заинтересованы в создании собственных анимаций, вы также можете бесплатно найти отличные анимации Lottie от великих художников на сайте LottieFiles.
Давайте сначала рассмотрим Lottie для React. В терминале npm install react-lottie
(или yarn install
, если хотите). Затем в компоненте, в котором вы хотите добавить анимацию, импортируйте его следующим образом:
import React from 'react'
import Lottie from 'react-lottie'
import animationData from 'path-to-your-lottie.json'
А вот и установка для рендеринга компонента Lottie. Объекты Lottie для react-lottie
принимают одну опцию опций в качестве объекта и другие свойства, которые управляют воспроизведением лотов.
class ControlledLottie extends Component {
state = {lottieStopped: false,
lottiePaused: false}
render(){
const options = {
loop: true,
autoplay: true,
animationData: animationData,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice'
}
};
return(
<div >
<Lottie options={options}
height={400}
width={400}
isStopped={this.state.lottieStopped}
isPaused={this.state.lottiePaused}
/>
</div>
)
И вы можете экстраполировать, как вы можете управлять запуском и остановкой анимации оттуда. Там также есть другие реквизиты для управления скоростью и другими параметрами воспроизведения. Например, чтобы изменить скорость, вы просто добавляете опору скорости следующим образом:
<Lottie options={options}
height={400}
width={400}
speed={2}
/>
При скорости 2 анимация будет воспроизводиться с удвоенной скоростью, и вы, конечно, также можете динамически изменять это значение, используя состояние или свойства. Вы даже можете воспроизвести анимацию в обратном направлении с помощью опоры скорости, установив ее равной отрицательному значению. Вы можете узнать больше о react-lottie
здесь или, в качестве альтернативы, заглянуть в другую библиотеку React Lottie, lottie-react-web.
Теперь перейдем к реализации Lottie в младшем брате React с lottie-react-native.
Сначала откройте свой проект и npm install lottie-react-native
. Опять же, вы также можете использовать Yarn здесь или expo install lottie-react-native
, если вы используете expo для разработки своего приложения.
Далее вам потребуется следующий импорт:
import React from 'react'; import { View } from 'react-native'; import LottieView from "lottie-react-native";
И настройте свой компонент, чтобы он выглядел примерно так:
export default class App extends React.Component { playAnimation = () => { this.animation.play(); }; render() { return ( <View> <LottieView ref={animation => { this.animation = animation; }} style={{ width: 400, height: 400, }} source={require('YOUR-PATH-HERE.json')} /> <Button title="Play Animation" onPress={this.playAnimation} /> </View> ); } }
Обратите внимание, что вместо импорта анимации, как в react-lottie
, в этом случае мы будем использовать оператор require в нашем коде как опору источника. При желании вы можете обрабатывать это по-разному в разных фреймворках, но это обычно является условностью большей части кода, с которым вы столкнетесь для этих фреймворков. Как и компонент Lottie react-lottie
, LottieView для lottie-react-native
также принимает другие реквизиты, такие как скорость и логическое значение для цикла.
Вот и все! Woo для плавной, легкой анимации из After Effects в приложениях для телефона или планшета за считанные минуты!
Очевидно, это всего лишь вводная часть, но я надеюсь, что они помогут вам быстро освоиться с одним из этих фреймворков! Не стесняйтесь обращаться в любое время, если у вас есть какие-либо вопросы по поводу вышеизложенного.