我的问题是关于在React和/或React Native动画中使用translateX和translateY,以将对象动画到某个点。
这两个转换是相对于现有点移动对象。
但在此场景中,现有坐标并不重要,我想确保对象移动到屏幕上的特定点,而无论其在哪里。
附加限制是,我无法动画化样式top
、bottom
、left
和right
,因为在React Native中,如果我们动画化这些样式,就不能使用指令useNativeDriver={true}
,这会导致性能问题。
我的问题是关于在React和/或React Native动画中使用translateX和translateY,以将对象动画到某个点。
这两个转换是相对于现有点移动对象。
但在此场景中,现有坐标并不重要,我想确保对象移动到屏幕上的特定点,而无论其在哪里。
附加限制是,我无法动画化样式top
、bottom
、left
和right
,因为在React Native中,如果我们动画化这些样式,就不能使用指令useNativeDriver={true}
,这会导致性能问题。
你可以使用onLayout
属性来获取任何View
组件相对于父元素的位置、高度和宽度。
像下面这样做应该可以。根据您当前的结构,您可能需要获得更多父级View
组件的位置。
componentDidMount() {
this.animatedValue = new Animated.Value(0);
}
animate() {
const { parentYPosition } = this.state;
Animated.Timing(this.animatedValue, {
toValue: FINAL_POSITION - parentYPosition
}).start();
}
render() {
return (
<View
onLayout={event => {
const { y } = event.nativeEvent.layout;
this.setState({parentYPosition: y})
}}
>
<Animated.View
style={{
position: 'absolute',
top: 0,
transform: [
{
translateY: this.animatedValue
}
/>
/>
);
}
top
, bottom
, left
, right
样式。 - Mehmet Kaplan
react-native-animatable
在react-native
中完成的。我想要使用上和左的值进行动画(与问题无关,因此未在此处粘贴)。就像这样:this.refsInSpace[i][j].transitionTo({top: c_footerHeight + (i+1) * this.squareEdge, left: j * this.squareEdge,}, 1000);
结束消息如下:错误:本地动画模块不支持样式属性'left'。
对于运动,似乎我需要使用 transformX 和 transformY,这点在问题中会涉及到,它们是相对运动。 - Mehmet Kaplan