收藏
回答

canvas.requestAnimationFrame失效,动画不渲染

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas.requestAnimationFrame 微信安卓客户端 8.0.1,8.0.2 2.0.16

模拟器:真机:

测试机型:华为P30,华为P40pro,华为mate20

canvas在模拟器能生效,安卓真机不渲染,IOS没问题

将requestAnimationFrame换为模拟的方法,安卓真机就能渲染了(具体看代码片段),判断是requestAnimationFrame失效导致的

三月初的时候,测试同学(华为P30)出现了这个问题且能稳定复现,但其他手机都复现不了,也就判断为手机的问题了

但今天发现能测的安卓机型都存在这个问题,怀疑是官方偷偷灰度更新了什么功能给影响到了,希望能够尽快解决一下,谢谢



回答关注问题邀请回答
收藏

2 个回答

  • 武曲心
    武曲心
    2021-03-24

    在没修复之前可以自己写requestAnimationFrame实现吧,相近功能也行

    let lastTime = 0

        requestAnimationFrame = function (callback) {

          var currTime = new Date().getTime()

          var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));

          var id = setTimeout(function () {

            callback(currTime + timeToCall)

          }, timeToCall)

          lastTime = currTime + timeToCall

          return id

        }

    cancelAnimationFrame = function (id) {

          clearTimeout(id)

        }

    2021-03-24
    有用 1
    回复 1
    • 渎
      2021-03-24
      最早小程序不支持requestAnimationFrame的时候是这么用的,但发现来回切路由的话计时器没有清掉,导致动画越来越慢。。。我看代码和你发的几乎完全一样,我再查下是不是我代码的问题吧。多谢
      2021-03-24
      回复
  • 若
    2021-05-08

    遇到了差不多的问题,线上的小程序受到严重影响,安卓调用canvas.cancelAnimationFrame就会crash。希望官方可以尽快解决,谢谢!

    2021-05-08
    有用
    回复
登录 后发表内容
问题标签