react-native - 如何从静态 PNG 图像创建具有 12 个步骤(每个 30 度)的微调器动画?
问题描述
目标是创建一个基于自定义 PNG 图像的动画微调器加载器。
像这样的东西
我的问题是每次 X 次创建 30 度的旋转。不是很顺利,而是一步一步地模仿原来的微调器。
constructor(props) {
super(props);
this.state = {
spinValue: new Animated.Value(0)
};
}
_animSteps = () => {
let steps = 11
let sequence = []
let deg = 0
for (let i = 0; i <= steps; i++) {
deg += 30
sequence.push(
Animated.timing(
this.state.spinValue,
{
toValue: deg,
duration: 1000,
easing: Easing.linear,
useNativeDriver: true
}
)
)
}
return sequence
}
使成为:
Animated.loop(
Animated.sequence(
this._animSteps()
)
).start()
<Animated.Image
style={[s.loader, { transform: [{ rotate: this.state.spinValue }] }]}
source={require('loader.png')}/>
解决方案
解决方案:
constructor(props) {
super(props);
this.state = {
spinValue: new Animated.Value(0)
};
}
render() {
let seq = []
for (let i = 1; i < 13; i++) {
seq.push(Animated.timing(
this.state.spinValue,
{
toValue: i,
duration: 0,
easing: Easing.linear,
useNativeDriver: true
}
))
seq.push(Animated.delay(60))
}
Animated.loop(Animated.sequence(seq)).start()
const spin = this.state.spinValue.interpolate({
inputRange: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
outputRange: ['0deg', '30deg', '60deg', '90deg', '120deg', '150deg', '180deg', '210deg', '240deg', '270deg', '300deg', '330deg', '360deg']
})
return (
<View style={[s.container, this.props.style]}>
<View style={s.loaderHolder}>
<Animated.Image
style={[s.loader, { transform: [{ rotate: spin }] }]}
source={require(Image.Source)}/>
</View>
</View>
)
}
推荐阅读
- css - 使用 Angular-CLI 进行 CSS 优化后处理
- ios - React Native标签栏闪烁
- jquery - 隐藏已附加内容的问题
- python - Matplotlib 自定义样式:不同的刻度颜色和刻度标签颜色
- swift - 将 Firestore 数据显示到 UIPicker Swift 4
- python - 通过python仅从txt文件中提取特定文本
- wordpress - Woocommerce 自定义文本区域的文本域
- c++ - C ++:包含头文件会导致“未找到体系结构的符号”,而包含 .cpp 文件则有效
- javascript - 计算html表中的唯一值
- javascript - 我在 Jquery 中见过的最奇怪的事情