起因

因为要做一个画画板的功能,所以使用了canvas组件,一开始好多人说小程序canvas性能特别差,也没太注意,做出来之后确实有点卡,而且每一笔touchmove时间越长越卡,最终导致页面卡到无法使用。

开始找原因

canvas优化

第一步肯定是先找一下canvas的问题,网上搜到一些材料优化canvas的思路,无非就是以下几种,详细的可以参考我的另一个文章

  1. 绘制的图形的数量和大小会影响canvas的性能, 减少绘制物,减少绘制指令
  2. 图形数量过多,但是只刷新部分 可以使用局部渲染
  3. 逻辑层和背景图层分离 可以使用分层渲染
  4. 某些长时间的逻辑影响主线程的, 可以使用离屏渲染 和webworker 来解决问题

这里做了两个优化:

  1. 禁用滚动,一开始一直卡的不行,后来查资料发现滚动跟touchmove事件有冲突,禁用之后好了许多
  2. 将ctx.stroke()指令放到定时器中执行,每50ms执行一次,这样就是一个固定频率执行,不会因为频繁触发touchmove导致ctx.stroke()一秒钟执行几百几千次

经过处理,这些已经好了很多,但是当绘画事件变长时还是会变得越来越卡,直到最后卡的,动不了,延迟十几秒那种,所以继续找问题

小程序canvas画画板签字版,touchmove时卡顿的问题(根本原因是因为vue语法中page.data导致视图层和逻辑层的频繁通讯导致)相关推荐

  1. 微信小程序canvas 画圆形带刻度进度条

    .canvas_1{ position: absolute; width: 120rpx; height: 120rpx; background: rgba(255, 00, 0, 0.0); } & ...

  2. 微信小程序canvas画价格走势图(六)

    到上一篇,可以说,所有的工作已经完成了,那为什么还会有第六篇呢?因为,客户改需求了,UI设计图改了,我也就不得不改代码,画一个新的版本出来.我在大功告成,开始写第一篇的时候突然改的,我也就准备加一篇来 ...

  3. 【修复日常bug】微信小程序canvas画商品海报出现个别用户无法生成的情况

    微信小程序,在使用canvas画海报的时候,会导致个别用户无法生成的情况,你们可以尝试把绘画某些块的代码注释掉再进行扫码调试,我前几天就遇到个别客户无法生成商品海报的情况,刚开始是以为上一个同事留的坑 ...

  4. 微信小程序canvas画价格走势图(三)

    今天继续更新在微信小程序上用canvas画价格走势图.上一篇讲了图上主要的部分,也就是折线图的绘制.假如我在我的绘图主函数中只调用了绘制折线图的函数,效果是这样的: 可以说除了作为坐标背景的<i ...

  5. 微信小程序canvas画价格走势图(一)

    今天是周二,今天来开一个新坑吧.最近花了整整两个工作日的时间画了一个微信小程序端的价格走势图,现在来分享一下经验. 因为内容比较多,所以打算这次分为多篇博客来写,这样一篇博客的内容就会更少.更清晰.下 ...

  6. 微信小程序canvas画图案列,实现生成头像并保存,小程序新版canvas变化,小程序中canvas注意事项

    你一定见过很多制作头像的小程序,无论是国庆的红旗,圣诞的帽子,还是疫情的口罩,都可以用小程序生成应景的头像,那么具体的代码是怎么实现的呢?前些天帮别人做了一个生成姓氏头像的功能,里面的实现原理基本一致 ...

  7. 微信小程序canvas画价格走势图(五)

    最近比较忙,所以趁着今年的最后一个周末,来把最后两篇完结掉.这是倒数第二篇了,这一篇的内容很简单,讲的是细节的绘制,也就是底部的刻度线和日期的绘制,以及一个小小的总结. 目前我们完成了canvas的准 ...

  8. 微信小程序canvas 画动态圆环百分比进度条实例 根据手机屏幕宽度自适应放大缩小

    这里是wxml代码: <component-analysis-report active="0" bindselectReport="selectReport&qu ...

  9. 小程序canvas画头像

    var contex = wx.createCanvasContext('firstCanvas')     var avatarurl_width = 100;    //绘制的头像宽度     v ...

最新文章

  1. MySQL基础篇:子查询
  2. android 自定义图片容器,Android应用开发中自定义ViewGroup视图容器的教程
  3. 软件测试2019:第三次作业
  4. mysql 8.0认证失败_解决mysql8.0因密码认证插件导致的链接不上
  5. websocket的加密和解密
  6. Mac SecureCRT解决中文乱码
  7. ajax html页面传值乱码,jQuery Ajax传值到Servlet出现乱码问题的解决方法
  8. Angular ngTemplateOutlet
  9. python爬app视频_python爬取抖音APP视频教程
  10. 福建省高考成绩查询2021具体时间,福建高考时间2021具体时间表一览 福建高考时间是几月几号...
  11. linux系统 nvme驱动模块,Linux 5.5最终通过HWMON公开NVMe驱动器温度
  12. iOS版本关于微信分享后出现的“未验证应用”
  13. iOS13 Scene Delegate详解
  14. 正则表达式验证ip是否是内网ip
  15. java 实现小米商城系统
  16. FM收音机 RDS的强大功能
  17. 理解Nand Flash原理图
  18. 计算机网络与无线通信系统学习1:计算机通信网概述
  19. 明解C语言入门篇_第10章_指针
  20. iPhone--什么是解锁

热门文章

  1. 基于Hadoop部署实践对网站日志分析(大数据分析案例)
  2. [创业之路-43] :复盘与自省 - 创业初感悟(冲动->纠结->忐忑)与“不贪、不赌、不悔”做人做事三原则的成形
  3. 搭建一个apache+php+mysql的网站
  4. 【K3s】第3篇 解决K3s状态一直是ContainerCreating
  5. 2023西安交通大学软件工程915考研经验帖(初试+复试)
  6. [转帖]老鸟运维的下场
  7. 程序员常用不常见很难得的地址大全转
  8. 二哥,你知道腾讯的技术职级吗?
  9. 如果你的App发生闪退,一般是什么原因造成的?
  10. 分析称丢失魔兽代理权九城或将陷入破产危险