Использовать императивный API намного проще.
Конструктор
constructor(props) {
super(props);
this.state = {
progress: 0,
}
}
Используйте компонентDidMount для тестирования. play(startFrame, EndFrame).
Вам необходимо узнать номер конечного кадра анимации для использования с ползунком. Продолжайте изменять конечный кадр до тех пор, пока он не будет воспроизведен до конца - это ваш номер.
componentDidMount() {
// Or set a specific startFrame and endFrame with:
// this.animation.play(0, 100);
}
Функция стрелки, которая возвращает значение и изменяет состояние прогресса. Вы можете установить частоту кадров анимации для запуска и остановки на одном кадре.
animateIt = (value) => {
//this.animation.reset();
this.setState({progress: value})
this.animation.play(value, value);
}
Ваш лот ie компонент
<LottieView
ref={animation => {
this.animation = animation;
}}
style={{ height: 400, width: '100%' }}
source={require('../assets/lottie-animations/animation.json')}
/>
Ваш ползунок устанавливает максимальное значение равным последнему кадр анимации. В моем случае это было 40. Также ползунок вызывает функцию стрелки и возвращает значение.
<Slider
style={{ width: '100%', height: 40 }}
minimumValue={0}
maximumValue={40}
onValueChange={(value) => this.animateIt(value)}
/>