微信开发者工具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),
最终效果
热门推荐
中国"纺织之乡"迎来国内首条非遗扎染智能机器人生产线
《神秘博士》中六大标志性小玩意,你期望成真
DNA特征可视化利器:DNA Features Viewer
高清视频修复原理详解:如何实现视频高清修复?
租房时哪些情况下物品损坏需租客赔偿?
房屋租赁期间房东卖房租赁合同是否还有效
《哪吒2》逼近全球前六,海外市场升温,冲击前三胜算几何?
如何根据预算智慧选择CPU显卡,打造高性能游戏主机指南
如何制定有效的人事档案管理制度细则?
70年代经典跑车都有哪些特点?
吊顶龙骨材料 吊顶龙骨规格 吊顶龙骨安装
中加航线迎来新变化!海航复航北京-多伦多,加拿大航空纷纷降价
高效管理考研管综时间:备考时间规划与冲刺技巧
手把手教你养仙人指,牢记掌握这4个小技巧,学会了开花一茬接一茬
中国猎犬品种介绍(探寻中国犬种中适合做猎犬的品种)
颈椎567椎间隙变窄怎么办
IDA医学上是什么意思?医学IDA指什么?
刘备是否投靠过孙权?历史真相的深度剖析
孙权的用人之道:如何在放权的同时稳固政权
校园招聘准备指南:简历与面试技巧全解析
伯恩山犬饲养全攻略(从喂养、运动到健康的细节,让你的伯恩山犬健康成长)
包装盒定制需要注意哪些问题?
如何将Markdown文件高效转换为TXT格式?
高温蒸汽灭菌验证的原理和流程
如何慧眼识珠:苹果手机充电线的优劣辨别指南
农村猪圈改造方案,建设原则!最全猪舍的合理设计标准都在这
撰写有效起诉书的指南与格式要点
加拿大TOP商学院本科/硕士申请指南
加州大学团队开发新型超声贴片,实现3D脑血流动力学监测,为脑科学研究提供有效平台
景深合成获得清晰景色