小程序Android端movable-view拖拽卡顿掉帧的优化

栏目: IOS · Android · 发布时间: 5年前

内容简介:例如页面有 2 个元素 A 和 B,用户在 A 上做 touchmove 手势,要求 B 也跟随移动,a、touchmove 事件从视图层(Webview)抛到逻辑层(App Service)b、逻辑层(App Service)处理 touchmove 事件,再通过 setData 来改变 B 的位置

例如页面有 2 个元素 A 和 B,用户在 A 上做 touchmove 手势,要求 B 也跟随移动, movable-view 就是一个典型的例子。一次 touchmove 事件的响应过程为:

a、touchmove 事件从视图层(Webview)抛到逻辑层(App Service)

b、逻辑层(App Service)处理 touchmove 事件,再通过 setData 来改变 B 的位置

一次 touchmove 的响应需要经过 2 次的逻辑层和渲染层的通信 以及一次渲染 ,通信的耗时比较大。此外** setData 渲染也会阻塞其它脚本执行**,导致了整个用户交互的动画过程会有延迟。

针对以上原因,微信小程序推出了 WXS(WX Script) ,其作用是能够让逻辑代码在视图层(Webview)运行,通过减少数据在视图层和逻辑层之间的传输次数,进而达到优化的目的。具体参考:WXS和 WXS响应事件

在Taro中使用WXS的优化实践

背景:由于目前Taro中还没有支持WXS( taro#2959 ),所以我在项目中不能直接编写WXS代码,让Taro帮我编译成WXML。所以得用点小技巧来实现,希望未来Taro能够支持WXS。

如果你是使用原生小程序开发可以直接参考WXS和WXS响应事件来实现,如果是其他框架则可以参照本文章进行实践。

优化前的代码

优化前通过 setState 来动态更新 x,y 坐标值,从而利用 movable-view 达到拖拽效果。

小程序Android端movable-view拖拽卡顿掉帧的优化
小程序Android端movable-view拖拽卡顿掉帧的优化

进行优化

首先需要去除掉 movable-view 组件,因为无法使用 movable-viewWXS 来达到减少数据传输经过的路径次数,其次 movable-view 是用CSS做的动画,我们可以用 position:absolute 来代替,在 WXS 中动态设置 top&left 的值,达到 movable-view 的效果。

小程序Android端movable-view拖拽卡顿掉帧的优化

其次我在小程序开发者 dist 目录下对应组件(使用到 WXS 的组件或页面)的目录下创建了一个 move.wxs 的脚本文件,用于动态设置需要做动画的节点的 top&left 坐标值。

dist 目录下写 move.wxs 的原因是因为Taro没有支持WXS,因此无法识别 .wxs 类型文件,也不会进行编译。

小程序Android端movable-view拖拽卡顿掉帧的优化

最后在对应的 JSX 下引入 move.wxs 并且与 touchmove 事件绑定。

小程序Android端movable-view拖拽卡顿掉帧的优化

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出SQL(中文版)

深入浅出SQL(中文版)

贝里 编 / O‘Reilly Taiwan公司 / 东南大学 / 2009-6 / 98.00元

你将从《深入浅出SQL(中文版)》学到什么?在如今的世界,数据就是力量,但是成功的真正秘诀却是管理你的数据的力量。《深入浅出SQL(中文版)》带你进入SQL语言的心脏地带,从使用INSERT和SELECT这些基本的查询语法到使用子查询(subquery)、连接(join)和事务(transaction)这样的核心技术来操作数据库。到读完《深入浅出SQL(中文版)》之时,你将不仅能够理解高效数据库设......一起来看看 《深入浅出SQL(中文版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具