微信小程序画图drawImage有时不显示,解决办法

图片来源于网络

问题现象

在微信小程序里调用drawImage函数画图,在微信开发者工具中显示正常,在真机上有时启动后不显示,关闭后重新开启又显示正常。

问题原因

产生该问题的原因,一般是由于图片加载问题导致。在图片尚未加载成功之前调用drawImage函数,将会导致画图失败。

解决途径

这个问题可以通过图片预加载方式来解决。
图片预加载方法,网上有人推荐使用Image组件的bindload事件来完成,若需要加载多张图片,则需要使用如下方式:
1.设一个容器,数字,数组都行。
2.给每个bindload事件都加一个相同的函数 ++或者push。
3.给预加载函数写个定时器,循环获取这个容器,达到预想值再执行,再清除定时器。
在这里,我们给出另一种实现方式,即使用wx.getImageInfo函数,下面给出代码样例。
(1)单张图片加载样例,(假定图片路径为imagePath,绘制函数为render)

  preLoad() {
    let scope = this;
    this.bindRender = this.render.bind(this)

    wx.getImageInfo({
      src: scope. imagePath,
      success(res) {
        setTimeout(scope.bindRender, 100);
      }
    })
  }

(2)多张图片加载样例,(假定imagePaths为存储图片路径的数组,绘制函数为render)

  loadImage(imagePaths, index) {
    let scope = this;
    if (imgs.length > index) {
      wx.getImageInfo({
        src: imagePaths [index],
        success(res) {
          scope.loadImage(imagePaths, index + 1)
        }
      })
    } else {
        setTimeout(scope.bindRender, 100);
    }
  }

  preLoad() {
    let scope = this;
    this.bindRender = this.render.bind(this)

    scope.loadImage(scope.imagePaths, 0);
  }
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (1)Time Profiler:用来测量被方法/函数打断的CPU使用情况。 (2)Core Animation:...
    钱嘘嘘阅读 1,813评论 2赞 6
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,844评论 1赞 32
  • 那个夏天,她把宿舍整理成了刚刚搬进来的样子,几次在安静的六楼和人声鼎沸的地面之间穿梭,屋里开始慢慢可以听到声音的回...
    笑晕阅读 376评论 3赞 2
  • 时间是个特别奇怪的东西,个人在时间的洪流中,犹如经受层层海浪不同的淘洗和冲刷,最后留下来的肯定就精华。 ...
    N1035陈团宏阅读 1,690评论 0赞 1
  • 很久没有发这么大的火了,今天来了12个小朋友,比较多,放学的时候我站在最前面,一个个的把小朋友交到家长的手里了...
    伟泽泽妈阅读 248评论 0赞 1

友情链接更多精彩内容