跳到主要内容
版本:0.82

Animated.ValueXY

用于驱动 2D 动画的二维值,例如拖拽手势。其 API 与普通 Animated.Value 几乎相同,但支持多路复用。内部包含两个普通的 Animated.Value

示例


参考

方法

setValue()

React TSX
setValue(value: {x: number; y: number});

直接设置值。这会停止当前在该值上运行的任何动画,并更新所有绑定的属性。

参数:

名称类型必需描述
value{x: number; y: number}

setOffset()

React TSX
setOffset(offset: {x: number; y: number});

设置一个偏移量,该偏移量会叠加在已设置的值之上,无论该值是通过 setValue、动画还是 Animated.event 设置的。适用于补偿诸如手势开始位置之类的情况。

参数:

名称类型必需描述
offset{x: number; y: number}偏移值

flattenOffset()

React TSX
flattenOffset();

将偏移值合并到基础值中,并将偏移重置为零。值的最终输出保持不变。


extractOffset()

React TSX
extractOffset();

将偏移值设置为基础值,并将基础值重置为零。值的最终输出保持不变。


addListener()

React TSX
addListener(callback: (value: {x: number; y: number}) => void);

为该值添加一个异步监听器,以便你可以观察动画的更新。这样做很有用,因为值可能由原生驱动,因此无法同步读取。

返回一个字符串,作为监听器的标识符。

参数:

名称类型必需描述
callbackfunction回调函数,它会接收一个对象,其中 value 键被设置为新值。

removeListener()

React TSX
removeListener(id: string);

注销一个监听器。id 参数应与之前 addListener() 返回的标识符匹配。

参数:

名称类型必需描述
idstring被移除的监听器的 Id。

removeAllListeners()

React TSX
removeAllListeners();

移除所有已注册的监听器。


stopAnimation()

React TSX
stopAnimation(callback?: (value: {x: number; y: number}) => void);

停止任何正在运行的动画或跟踪。callback 会在动画停止后接收最终值,这对于更新状态以使布局与动画位置一致很有用。

参数:

名称类型必需描述
callbackfunction一个会接收最终值的函数。

resetAnimation()

React TSX
resetAnimation(callback?: (value: {x: number; y: number}) => void);

停止任何动画,并将值重置为其初始值。

参数:

名称TypeRequiredDescription
callbackfunctionNoA function that will receive the original value.

getLayout()

React TSX
getLayout(): {left: Animated.Value, top: Animated.Value};

{x, y} 转换为 {left, top} 以用于样式,例如:

React TSX
style={this.state.anim.getLayout()}

getTranslateTransform()

React TSX
getTranslateTransform(): [
{translateX: Animated.Value},
{translateY: Animated.Value},
];

{x, y} 转换为可用的平移变换,例如:

React TSX
style={{
transform: this.state.anim.getTranslateTransform()
}}