Я делаю игрока с круглым индикатором выполнения. Этот проигрыватель имеет 2 функции:
- Ручка перемещается автоматически каждую секунду (во время воспроизведения песни)
- Круглый индикатор выполнения имеет ручку, которую пользователь может перемещать (для очистки песни)
Для первого задания я использовал таймер, который обновляет Animated.Value
с 0 до 1 (в зависимости от продолжительности песни) и интерполирует значения в градусы. Работает нормально.
Но как мне выполнить второе задание? Я пытался использовать PanResponder
с Animated.Event
внутри onPanResponserMove
, но я просто не мог заставить его работать.
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.pan = new Animated.ValueXY()
this.panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => true,
onPanResponderMove: (e, gestureState) => return Animated.event([
null, {
dx: this.pan.x,
dy: this.pan.y,
}])(e, gestureState),
onPanResponderRelease: () => {
},
});
}
render() {
return (
<Animated.Image
{...this.panResponder.panHandlers}
style={[{translateY: this.pan.y}, {translateX: this.pan.x}, {rotate: this.pan.x.interpolate({
inputRange: [0, 1],
outputRange: ['0deg', '360deg'],
})]}>
{this.props.children}
</Animated.Image>
);
}
}
Пожалуйста, сообщите. Спасибо!