微信开发者工具Canvas2D渲染报错解决方案
创作时间:
作者:
@小白创作中心
微信开发者工具Canvas2D渲染报错解决方案
引用
CSDN
1.
https://blog.csdn.net/carfge/article/details/139004729
注:本文具有时效性
背景
最近发现之前用canvas绘制的背景图,在最新版微信开发者工具控制台会报错:[渲染层错误] Uncaught TypeError: this._getData is not a function
问题
现在微信开发者工具 渲染不出背景图 ,大部分真机中渲染正常无报错,小部分安卓机(如华为Android12)渲染成功但过几秒就会引起 微信闪退 ,小程序没有抓到任何报错。
定位排查
代码一步步屏蔽排查后,发现是setData方法在设置canvas宽高时导致报错。
<view class="preview" id="preImage"> <canvas type="2d" id="foodCanvas" style="width: {{canvasWidth}}px;height: {{canvasHeight}}px;"></canvas>
解决方案
- 若知道canvas标签的父元素宽高,则可通过css设置canvas宽高均为100%,自动撑开继承父级宽高。本人在此处采用了该方案,父元素(id="preview")是flex布局计算得到的区域,不同机型宽高不同,但父元素渲染计算结果是动态固定的。修改后的代码如下:
<view class="preview" id="preImage"> <canvas type="2d" id="foodCanvas" class="canvas"></canvas>
- 若不知道canvas标签及其父元素宽高,必须动态设置宽高,则可以通过wx:if命令来动态渲染。在另一处代码,本人的修改如下:
<canvas type="2d" id="clipCanvas" class="clip-canvas" wx:if="{{imgData.canvas}}" style="width: {{imgData.canvas.width}}px;height: {{imgData.canvas.height}}px;"></canvas>
width: Math.floor(width * scale), height: Math.floor(height * scale),
最终效果
热门推荐
职称继续教育:职场成长的必备之路
揭秘!职称论文背后的隐形门槛与突破之道
怀集年味:油角仔里的传统与创新
东北三省春节民俗大揭秘:吃饺子、点长寿灯!
黄瓜的创意做法大全,简单又美味
简单易学!家常版凉拌黄瓜教程
影院随便“开盲盒”都是高分电影,贺岁档还有惊喜吗?
牡蛎配牛奶:专家推荐的骨骼健康黄金搭档
吃生蚝真的能变聪明?揭秘生蚝的营养与食用指南
冬季警惕!牡蛎食用安全全攻略
冬至到清明,牡蛎最肥美!6种做法分享
甘甜牛大力高效种植秘籍大公开!
秋冬养生必备:牛大力三种食用方法详解
牛大力:南方人参的养生之道
秋冬养生必备:牛大力助你缓解风湿痛
春季过敏多发,过敏人的“救命药”氯雷他定该怎么吃?
氯雷他定冲上热搜!医生提醒:这种药不能随便吃
无尽无穷:我们真的能理解宇宙吗?
这届春晚不一样了!全民期待!赵本山、宋丹丹携手受到强烈推荐
秦始皇之死:千古之谜与无尽思考
徐州乐园亲子游攻略:遛娃必去!
徐州汉兵马俑:两千年前的地下雄师
云龙湖畔赏湖光山色,徐州博物馆里寻千年文脉
文旅部&气象局发布春节出行指南:这些地方最适合旅游
0.2级电流互感器:工业用电精准计量的关键设备
春节打卡浙江五大热门景点:千岛湖、西湖、绍兴、义乌、宁波
春节打卡阆中古城:最地道的年味体验
春节热门休闲活动:冰雪游、温泉度假和非遗体验
白扁豆拯救你的黏腻大便!
虚荣心:从认识自我到克服困境