我正在尝试使用一些图像创建一个反应原生动画作为倒计时,如下所示:
3 --> ease out down duration 1 second each case
2 --> ease out down
1 --> ease out down
我找到了一种通过 react animatable 来做到这一点的方法,但结果并不能说服我,如果有更好的方法,请告诉我。
我想每次我遇到一个新的元素渲染开始倒计时我说反应动画以使每个数字改变图像编号的迭代 3 缓和下来,这不是解决我遇到的问题的自然方法。
暂时没用redux,以后可能会补充。状态的属性:时间,当前开始时间尚未使用。
我所需要的只是在我展示的图像中发生倒计时的效果,在一个定义明确的动画中。
我认为快到了,但肯定有更好的方法来解决这个问题,任何建议都会受到好评,即使它只是作为指导。我也尝试过 react-native-animate-number 但没有运气......
提前致谢
import React from 'react';
import util from '../utils.js';
import * as Animatable from 'react-native-animatable';
import {
View,
Dimensions,
Image,
StyleSheet
} from 'react-native';
const width = Dimensions.get('window').width;
const height = Dimensions.get('window').height;
const styles = StyleSheet.create({
mainOption: {
},
container: {
width: width,
height: height,
flex: 1,
justifyContent: 'center',
flexDirection: 'column',
alignItems: 'center'
}
});
const timeLapse = [
<Image source={require('../images/1.png')} key={util.uniqueId()}/>,
<Image source={require('../images/2.png')} key={util.uniqueId()}/>,
<Image source={require('../images/3.png')} key={util.uniqueId()}/>
];
export default class StartingGameCountDown extends React.Component {
constructor(props) {
super(props);
this.state = {
time: props.time,
currentTimeToBegin: props.currentTimeToBegin,
imagePosition: 0
};
}
componentWillReceiveProps(nextProps) {
const nextImage = this.state.imagePosition + 1;
this.setState({
...this.state,
letters: nextProps.time,
currentTimeToBegin: nextProps.currentTimeToBegin,
imagePosition: nextImage
});
}
render() {
return (
<View style={styles.container}>
<Animatable.View
ref='countDown'
duration={1000}
delay={0}
iterationCount={3}
animation="fadeOutDown"
style={styles.mainOption}>
{timeLapse[this.state.imagePosition]}
</Animatable.View>
</View>
);
}
}