Я пытаюсь создать анимацию в реактивном нативе, где персонаж делает несколько взлетов sh. Переход вверх и вниз выполняется в тот момент, когда я хочу.
Итак, я разделил анимацию GIF на 2 GIF, без повторений. Один, чтобы заставить его идти вверх, и другой, чтобы заставить его идти вниз. Эти изображения хранятся локально
Проблема в том, что при смене gif возникает мерцание.
Я пытался реагировать -fast-image, но анимация GIF слишком медленная и GIF автоматически зацикливается. Я попытался поместить изображение перехода в meatime, изображения переключаются, но все еще поведение мерцания. Обратный вызов изображения onLoadEnd, кажется, вызывается слишком рано, до того, как изображение на самом деле заканчивается загрузкой.
вот как я переключаю изображения
if (up.includes(this.props.timer))
this.setState({ currentGif: upGif, cacheImage: downPng })
if (down.includes(this.props.timer))
this.setState({ currentGif: downGif, cacheImage: upPng })
Вот рендер:
render() {
return (
<View
style={{ position: 'absolute', bottom: 70 }}
>
<Image
source={this.state.cacheImage}
style={{ width: 400, height: 330, position: 'relative', bottom: 70 }}
fadeDuration={0}
/>
<Image
source={this.state.currentGif}
style={{ width: 400, height: 330, position: 'absolute', bottom: 70 }}
fadeDuration={0}
onLoadEnd={() => {this.setState({cacheImage: null})}} // the Image should be loaded so I can hide the cache Image, but it desapear before the gif is loaded
/>
</View>
)
}