评论

worklet解决setdata动态改变translate参数导致对应元素闪烁的问题

worklet解决js修改animation参数导致元素闪烁的问题

onst offset = wx.worklet.shared(0)
   that.applyAnimatedStyle('#clLeft'() => {
     'worklet';
     return {
       transform: `translateX(-${offset.value}px)`
     }
   })
   that.applyAnimatedStyle('#clRight'() => {
     'worklet';
     return {
        transform: `translateX(${offset.value}px)`
     }
   })
that._offset = offset


项目需要做到一个效果,就是窗帘根据按钮实现开关停的操作(两个帘向两侧平移,或者同时靠拢),一开始使用animation,发现小程序没有onStop(),做不到中间暂停的效果,

于是选择动态修改translateX的参数,通过计时器每1S移动10px,点击暂停清除计数器。这种方法可以实现暂停,但是有一个问题,每次运动10px后setdata动态修改translateX的参数,两张图片就会重新渲染(看起来就是闪一下),这个方法处理不掉,原因就是:小程序采用双线程架构,渲染线程(UI 线程)和逻辑线程(JS 线程)分离

后面查询社区的时候AI提示小程序有worklet动画,可以同步js线程和UI线程的参数,于是运用上面代码同步了translateX 移动的参数,这样就不会存在js改变参数的时候ui会闪烁的问题了

最后一次编辑于  01-17  
点赞 0
收藏
评论
登录 后发表内容