业务需求:相册选择图片,然后在画布上绘制,用户可以通过手势移动放大旋转图片

在代码实现过程中发现,chooseImage选择原图时,touchmove平均250ms触发一次,chooseImage选择压缩图时,touchmove平均16ms触发一次;导致在选择原图时绘制会出现卡顿,保证不了60帧,选择压缩图偶尔也会出现200ms触发一次的情况,手机是mix2s,应该不是性能问题,业务相关,这是发的第三次了,望重视,已附代码片段




图中touchDistance是两次触发touchmove的时间间隔,drawDistance是绘制开始和绘制结束的时间间隔,单位ms,可以发现原图和压缩图的绘制时间都很短,但是在选择原图时,touchmove触发间隔明显增大,达到200-300ms,导致多次绘制达不到60帧,严重影响体验

展开全部
收起
2回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 吴静怡

    17人对此回答表示赞同

    你把console去了,效果会好点吗

    展开
    17
    15回复
    发布于 6年前

    评论(15)

    收起评论

    • Jack 2019-02-06 00:05

      不是惹不惹的问题,我还是建议你去了解一下js的运行机制,了解一下单线程是怎么处理异步的,从你的回复里可以看出你对这方面不是很了解,可能其他方面你很强,诚挚建议,不喜勿回

      回复
    • Landon 2019-02-07 23:15

      不知道我哪里惹了你了。。最后还是回复你一次

      回复
    • Erin院长 2019-02-09 20:32

      麻烦你先了解一下js运行机制,什么是任务队列,什么是主线程,什么是异步,js是怎么处理异步

      回复
    • Anthony 2019-02-11 12:27

      不理解你想说明啥,你这里不就是draw这个动作太慢了吗,1次draw没完成,touchmove就把下一次draw送队列里了

      回复
    • Sakura_1 2019-02-13 17:19

      你可以先了解一下js的运行机制,整个流程是这样的,当touchmove触发时会向任务队列推送相应事件,eventloop顺序执行队列里的事件也就是执行touchmove里写的的function,之后代码执行到draw()得时候,因为draw是异步所以主线程会挂起draw的回调执行draw以后的代码,当渲染层图片绘制完成,会向任务队列推送draw的事件,这个时候eventloop会顺序执行队列的事件,过程中如果touchmove在draw完成之前推送事件到任务队列,则会先执行touchmove

      回复
    • Peyton 2019-02-15 16:59

      设timeout干嘛?你timeout的事件到时间了还不是把事件放到队列里在处理

      回复
    • 沐雨风 2019-02-17 13:16

      哦。。你用的画图啊。。图大了,处理起来慢,不是很正常嘛。。

      回复
    • Dara永远三岁 2019-02-19 17:52

      异步跟事件两个概念,你可以在代码里设个timeout试一下

      回复
    • 徐子衿 2019-02-21 13:21

      不可以,movable-view不能超出外边界

      回复
    • 安以 2019-02-23 12:30

      事件处理队列只有1个,所谓的异步,只是把事件塞进队列,并不是真的有异步线程在处理,队列里的事件太多,而且每一个处理都要几个十几ms或者几十ms的话,就会丢帧了

      回复
    • 赵凯歌 2019-02-25 14:21

      有没有试过用movable-view做

      回复
    • Tala 2019-02-27 15:40

      可以看代码片段,只有console和draw(),理论上draw是异步也不会阻塞touchmove触发,何况draw整个过程在几毫秒完成

      回复
    • Emilia 2019-03-02 00:12

      代码片段里没有移动缩放旋转的代码,小程序里有,去掉console仍然卡帧

      回复
    • Ian 2019-03-03 20:06

      touchmove里做了些什么事啊

      回复
    • 凌云舒语 2019-03-05 11:07

      不会

      回复
    加载更多
  • Hazel

    13人对此回答表示赞同

    同一个问题,发的第三次,第一次官方要代码片段,发了然后不了了之,第二次直接沉了,希望这一次官方有回复(ps:社区什么时候能加个@功能?)

    展开
    13
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部