我对 react-native-reanimated v2 很陌生,我有这个用例:
我制作了一个 swipeDeck 组件,用户在其中刷卡并显示下一张。动画被实现并且它们工作。但现在我想添加这个新功能,根据滑动手势的 x.value 翻转下一张卡片(Y 旋转)。
旋转有效,但我想在卡片具有背面背景的情况下添加功能。为此,我看到会有 2 个图像。并且基于旋转Y,不透明度交换导致卡片的视觉翻转。
这是我的代码,一旦我实现了辅助方法const { cond, and, greaterOrEq, lesserThan } = Animated;
,应用程序就会崩溃。
我这样做对吗?如果没有,我将如何处理这个问题?我目前的方法基于 2019 年的 YT 视频:https ://www.youtube.com/watch?v=eJtwpjCIRsA&t=3s
这里还有一些片段:
这是底层卡片正面的动态样式。
const nextCardStyle = useAnimatedStyle(() => {
const nextCardScale = interpolate(x.value,
[-dimensions.width / 2, 0, dimensions.width / 2],
[1, 0.8, 1],
Extrapolate.CLAMP);
// const nextCardOpacity = interpolate(x.value,
// [-dimensions.width / 2, 0, dimensions.width / 2],
// [1, 0, 1],
// Extrapolate.CLAMP);
const nextCardRotationY = interpolate(x.value,
[-dimensions.width / 2, -dimensions.width / 5, 0, dimensions.width / 5, dimensions.width / 2],
[0, 155, 180, 155, 0],
Extrapolate.CLAMP);
const nextCardOpacity = cond(and(greaterOrEq(nextCardRotationY, -90), lessThan(nextCardRotationY, 90)), 1, 0);
return {
transform: [
// { perspective },
{ scale: nextCardScale },
{ rotateY: `${nextCardRotationY}deg`}
],
opacity: nextCardOpacity,
}
});
所以基本上每当卡片旋转 90 度时,它都需要变得完全透明。并且背面,遵循相同的动画路径,将变得完全不透明。
但是使用这些 v1.xx 方法导入的应用程序崩溃。