糯米大团子
糯米大团子
  • 发布:2019-01-15 18:27
  • 更新:2021-06-05 11:27
  • 阅读:2192

canvas在touchmove时运行draw无法绘图,有大神知道怎么办吗?

分类:uni-app

最近做一个canvas签名功能。需要在touchmove时实时绘制轨迹路径。
但是发现在touchmove中运行draw无法绘图。而在touchend运行draw则可以正常绘图。
目前做了个折衷方案,在touchstart时设置一个定时器定时运行draw,在touchend时销毁定时器。发现能画了,但画出的线条断断续续。而且定时器间隔时间越长画的越清晰,间隔时间越短画的越模糊。
有大神知道如何解决吗?或者有什么第三方插件有签名功能可以用吗?
求救。。。

2019-01-15 18:27 负责人:无 分享
已邀请:
糯米大团子

糯米大团子 (作者)

这是在小程序里运行的效果。
touchMove依旧没有留下任何痕迹。
touchStart效果比在手机上显示效果好。


touchEnd曲线不失真了,但是堆栈溢出。

因为项目比较紧,我现在已经改成用web-view调用网页的canvas来实现了。这个问题官方可以考虑一下是否需要优化。否则我怀疑在用canvas做高帧数的动画效果时这个问题也可能成为阻碍。

糯米大团子

糯米大团子 (作者)

关键代码是这样的

具体vue文件放在zip压缩包里

DCloud_UNI_GSQ

DCloud_UNI_GSQ

你这用法看起来不对,你怎么每次从原点开始画,应该是一段一段的画吧,每次开始是上次的结束

  • 糯米大团子 (作者)

    已修改代码了。并且贴了效果图

    2019-01-16 14:40

糯米大团子

糯米大团子 (作者)

噢,是的。漏了一句。我重新发一下代码。顺便附上执行图。


这是在touchEnd执行draw的效果。


这是在touchStart执行定时器的效果。
而在touchMove没有留下任何轨迹。
另外修改代码时发现一个新问题。在touchEnd绘制时,我画的是曲线,但是到执行draw时会失真成为直线。

DCloud_UNI_GSQ

DCloud_UNI_GSQ

你试试直接写小程序不用uniapp是否正常?

2***@qq.com

2***@qq.com

请问你解决了吗?我现在也遇到这个问题,ios手机正常,安卓手机就突然不执行触摸的方法了

DCloud_UNI_GSQ

DCloud_UNI_GSQ

哪端出现的问题?上传一个demo,我调试看看

  • 糯米大团子 (作者)

    android原生和小程序都有问题。demo我贴在2楼了

    2019-01-16 09:14

要回复问题请先登录注册