微信开发者工具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),
最终效果
热门推荐
猫咪的抖动真相(为什么猫咪经常抖动)
绝妙!如何在不数数的情况下数数?你身边无处不在的鸽巢原理告诉你答案
动物权利立法与法伦理学:跨学科研究的重要性
龙云:演绎从凉山彝族土司后代到民国云南王的传奇
香港大学研究生入学条件及要求详解
台钓铅皮使用指南:作用、替代品及参数选择
2025东南亚跨境电商最全攻略:五国市场深度解析与成功策略
作文续写:地球上最后一个人……
泰安市妇幼保健院:重视耳聋基因筛查,重塑“有声”未来
营业收入负数是什么
贵州十大5A景区名单,基本是贵州景区的精华,你去过几个呢?
Windows 11 指纹识别设置详细指南
焦虑型依恋人格怎么治愈
农药的用量问题与药剂浓度的常用表示方法
五人组队名字及口号
修仙家族模拟器2新手攻略:从角色创建到搬砖交易全解析
提前还房贷:缩短年限还是减少月供,哪个更划算?
《永暮幻想》——黑暗世界的奇幻冒险之旅
免疫失衡导致胀气、便秘、腹泻!补对营养改善免疫力
广西的隐秘宝地:崇左的自然美景与地道美食
孕妇照片该如何拍摄?这些技巧帮你展现最美孕味
华阳夫人与吕不韦的关系及其对秦国的重要性
怎么高效得学习数据结构和算法
【全球高校排名】2024QS世界大学排名(完整版)
你真的懂“四舍五入”?不,你只是会做题
出生证明登记样本:探究我国出生证制度的变迁与发展
公务员考试逻辑推理强化训练300题及解析题库:国考逻辑推理训练题集解析与答案汇编
丽江生态旅游资源:从玉龙雪山到拉市海,一场人与自然的亲密对话
离婚中的分居协议与效力
家常山药美味,温养脾胃,适合孩子