Я перевожу представления, чтобы следовать жесту перемещения, с наименьшей возможной задержкой.
Я исследую пару вариантов, и один из них - если возможно - скорее отправлять действие setValue в поток пользовательского интерфейса чем поток JS.
Несмотря на то, что в документации указано, что функции типа Animated.timing, Animated.spring, et c могут быть выгружены в поток пользовательского интерфейса с помощью директивы useNativeDriver: true
, нет ссылки - по крайней мере, которую я мог бы найти - на, если возможно отправить прямое действие setValue в поток пользовательского интерфейса или нет.
Мой вопрос; Можно ли использовать анимированный setValue с useNativeDriver и как, если возможно.
Ниже приведен грубый пример кода, который я использую:
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {};
this.spaceAnimatedTranslations = new Animated.ValueXY();
this._animatedStyle = {
transform: [
{ translateX: this.spaceAnimatedTranslations.x },
{ translateY: this.spaceAnimatedTranslations.y }
]
};
}
onSpaceMove(event) {
this.spaceAnimatedTranslations.setValue({x: event.nativeEvent.translationX, y: event.nativeEvent.translationY});
}
render(){
return <PanGestureHandler
key={`test`}
onGestureEvent={e => this.onSpaceMove(e)}>
<Animated.View
ref={ref => {
this.testAnimatedView = ref;
}}
style={[this._animatedStyle]}>
<View style={styles._box_content}>
{someContent}
</View>
</Animated.View>
</PanGestureHandler>
}
}