У меня ниже путь svg, который вращается вокруг начала координат при каждом изменении состояния value
, где значение равно значению в несколько градусов:
<Path
transform={{
rotation: this.state.value,
originX: width / 2,
originY: height / 2
}}
d={`M ${width * 0.5} ${height * 0.5} L${width * 0.75} ${height * 0.75}`} //the actual path does not matter
fill={Colors.black}
stroke={Colors.black}
/>
Я вызываю setState для value
каждые ~ 20 мс, но это недостаточно плавно, + это не рекомендуемый способ перехода. Чего я хочу добиться, так это анимировать вращение с помощью анимированного API, чтобы добиться более плавного вращения.
Я пытался сделать свое value
состояние Animated.Value
. Затем создаем Path
a Animated.createAnimatedComponent(Path)
и вызываем:
Animated.timing(this.state.value, {
toValue: newDegreesValue,
duration: 1000,
useNativeDriver: true
}).start();
Затем я отображаю путь следующим образом:
<Path
style={transform:[{
rotate: this.state.value
}]}
d={`M ${width * 0.5} ${height * 0.5} L${width * 0.75} ${height * 0.75}`} //the actual path does not matter
fill={Colors.black}
stroke={Colors.black}
/>
Это не работает совсем близко к предыдущему рабочий код с использованием состояния. Одной из причин являются значения originX, originY, которые не поддерживаются API анимации, и я не знаю, как их заменить, но я не уверен, что это единственная причина, может быть, rotate
чем-то отличается от свойства rotation
?. Итак, вопрос в том, как достичь того же результата с помощью кода, который непрерывно вызывает setState, используя анимированный API?