微信开发者工具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),
最终效果
热门推荐
分布式数据库如何选择
产科小孧科普:如何应对宝宝夜醒、哭闹等睡眠问题?
查询公司股权:了解公司所有权结构
半导体的晶圆与流片是什么意思?
南通属于哪个省份哪个区?了解南通的地理位置
什么是“环崖丹崖”?
创业板新股申购规则详解:一签是多少股?
技术干货:三大必涨形态之欧奈尔杯柄形态
梅西的职业生涯惨案那么多,为什么大部分球迷甚至FIFA官方依然认定梅西是球王
足坛历史球员点球进球数排名!梅西高居第三 但命中率仅为78%
龙吸水:苍穹与海不相容,化身涡旋将相融
如何理解石雕弥勒佛的“大肚能容,容天下难容之事”这一寓意?
普通感冒的临床表现及应对方法
欧洲贵族养子爵位继承的历史考察
英语句子类型大揭秘:从简单句到复合句,让你的表达更上一层楼!
信噪比(SNR)的定义,如何计算信噪比
瑜伽腹式呼吸的好处和功效
怎样缓解头痛
休息不好头疼怎么办?专家给出五大缓解方法
骨肿瘤的主要临床表现
越吃越瘦!这5种食物竟是内脏脂肪的克星
质量管理条例的监督机构有哪些?
宝可梦检查和特殊状态
揭秘盐足浴:自然疗法的放松与健康益处
北航VS哈工大:顶尖工科院校全方位对比分析
可转换债券的组成部分
学术论文“起·承·转·合”的逻辑构成与运用
猫疱疹病毒的症状及治疗方案全解析
猫鼻支是什么
构建无障碍的交互体验:为所有用户提供平等访问机会的最佳实践