вам не нужна функция сна, и вы можете попробовать Animated.sequence (документы здесь при записи).И я рекомендую вам написать «Вдох», «Вдох» и «Задержать» и играть с непрозрачностью.
class BreatheCircle extends React.Component {
state = {
circleAnimation: new Animated.Value(0.6),
holdAnimation: new Animated.Value(0),
inhaleAnimation: new Animated.Value(0),
exhaleAnimation: new Animated.Value(0),
}
breathAnimation = Animated.sequence([
Animated.timing(this.state.inhaleAnimation, {toValue: 1, duration:100}),
Animated.timing(this.state.circleAnimation, {toValue: 1, duration:breatheTimings.in*1000}),
Animated.timing(this.state.inhaleAnimation, {toValue: 0, duration:100}),
Animated.timing(this.state.holdAnimation, {toValue: 1, duration:100}),
Animated.timing(this.state.holdAnimation, {toValue: 0, duration:100, , delay: breatheTimings.hold*1000}), //delay for the hold to disappear
Animated.timing(this.state.exhaleAnimation, {toValue: 1, duration:100}),
Animated.timing(this.state.circleAnimation, {toValue: 0.6, duration:breatheTimings.out*1000}),
Animated.timing(this.state.exhaleAnimation, {toValue: 0, duration:100}),
])
componentDidMount(){
// this.state.animated.setValue(0.6) // state already declare
this.animateCircle();
}
componentWillUnmount(){
this.breathAnimation.stop();
}
animateCircle(){
this.breathAnimation.start(() => this.animatedCircle())
}
//[...]
<Text style={{opacity: this.holdAnimation}}>Hold<Text>
<Text style={{opacity: this.inhaleAnimation}}>Inhale<Text>
<Text style={{opacity: this.exhaleAnimation}}>Exhale<Text>