Reanimated 2 不能使用具有直接值的 withSequence

Posted

技术标签:

【中文标题】Reanimated 2 不能使用具有直接值的 withSequence【英文标题】:Reanimated 2 can't use withSequence with direct value 【发布时间】:2021-12-29 12:34:24 【问题描述】:

我想使用withSequence 直接值作为第一个值,使用下面的代码导致应用程序崩溃。

animatedValue.value = withSequence(startValue, withTiming(endValue));

下面的代码似乎运行良好,但在我的情况下,使用 withTiming 内的 startValue 并没有帮助。

animatedValue.value = withSequence(withTiming(startValue, duration: 0), withTiming(endValue));

【问题讨论】:

通过编写这样的链式语句,您将状态发送到另一个钩子。但这取决于钩子是否将该值作为初始条件。因为否则钩子可能只使用一次。要让它工作,您需要知道withSequence 的输入参数是什么,初始值或运行时动态值。 @windmaomao 问题是我将一个数字传递给withSequance 函数并且它崩溃了。但不是动画值。这些不是状态,因为它们是共享值,它们用于 Reanimated 2 中的动画。 【参考方案1】:

您可以在触发动画之前简单地将startValue 直接设置为animatedValue.value

animatedValue.value = startValue;
animatedValue.value = withTiming(endValue,  duration: 500 )

【讨论】:

似乎 reanimated 由于某种原因跳过了第一个任务。 哦,好吧,我又看了你的问题,意识到我没能消化你的最后一句话。 withSequence(withTiming(startValue, duration: 0)... 和我的方法都适用于我,我怀疑你的代码中有一部分会导致阻止 startValue 被分配的副作用。您介意提供可重现的代码吗?

以上是关于Reanimated 2 不能使用具有直接值的 withSequence的主要内容,如果未能解决你的问题,请参考以下文章

Reanimated 2创建worklet失败,可能你忘了添加Reanimated的babel插件?,js引擎:hermes

安装 Reanimated 2 后仍会收到警告“如果您想使用 Reanimated 2 那么...”

使用 createDrawerNavigator() 时出现“错误:Reanimated 2 未能创建工作集,可能你忘记添加 Reanimated 的 babel 插件”

使用 React Native Gesture Handler 和 Reanimated 检测滑动方向

如何使用 reanimated 2 [REACT-NATIVE] 创建捏合以缩放相机应用程序

Reanimated 2创建worklet失败,可能是你忘记添加Reanimated的babel插件了?