我试图让 20 - 50 颗星“闪烁”(不透明度随随机间隔变化),但这会减慢应用程序的速度。
我正在使用复活的 2.2.0。
我尝试共享不透明度值,但只有 1 个元素应用了样式,我认为这可能是因为:“动画样式不能在视图之间共享。 ”
这是我的整个组件
function TwinklingStar({ position, size }) {
const starOpacity = useSharedValue(1);
useEffect(() => {
setInterval(() => {
starOpacity.value = withSpring(starOpacity.value ? 0 : 1)
}, getRandomInt(500, 1000))
}, []);
const twinkling = useAnimatedStyle(() => ({
opacity: starOpacity.value
}));
return (
<Animated.Image
source={sparkleImage}
resizeMode="cover"
style={[{
width: size,
height: size,
position: 'absolute',
top: position.y,
left: position.x
}, twinkling]}
/>
)
}
每张卡可能有 5 个,并且随机数量的卡,比如说 5-20 个。
我已经阅读了文档,但认为我没有正确理解它们,因为我无法弄清楚为什么应用程序正在爬行/冻结/崩溃。就像所有的动画都阻塞了 js 线程,但它们应该在 ui 线程上运行,因为不透明度的变化是由 useAnimatedStyle 钩子“捕获”的,它是一个“worklet”?
使困惑...