微信开发者工具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),
最终效果
热门推荐
中国邮政银行存款利率再下调:如何调整理财策略?
邮储银行三年期存款利率降至1.75%,你的钱袋子受影响了吗?
公办专科和复读怎么选
解密小红书:从技术架构到推荐算法,看普通人如何成为热点制造者
小红书“抽象”热潮背后的文化密码
影响 DHL 和 UPS 运输时效的关键因素
十二生肖金银币:收藏界的宠儿
十二生肖插画设计:传统与现代的完美融合
十二生肖:从时间标记到文化符号
《我和我的祖国》:七个故事,一部让你热泪盈眶的电影
永定到厦门自驾游超详细攻略!
培养孩子的终身学习力:从家庭教育做起
从孔子到现代课堂:教育方式大变脸
哈佛教授戴维·珀金斯:教育的未来在于培养"业余专家"
教育创新年会揭秘:如何成为未来优秀教师?
全解析:弹性义齿是什么?弹性义齿基托是什么?制作流程+优缺点介绍这里全都有!
弹性义齿和隐形义齿区别?无!弹性义齿是隐形义齿别称!将特色优势揭秘下!
隐形义齿详解,兼具美观与舒适的牙齿修复选择
周末带娃去哪儿?赣州森林动物园&大风车游乐园等你来!
燃气暖风:房车冬季取暖神器!
洛邑古城免票攻略:牡丹文化节必打卡!
红旗渠:河南林州的生态守护神
盘点中国历史上最有才的6位文人,他们不仅才华横溢,而且粉丝也不少
吟诵经典,启蒙智慧:开启幼儿诗词世界的金钥匙
沙盒游戏行业分析
中国海外短剧App冲榜背后:“霸总”们赚到钱了吗?
存款利率再降!银行如何稳息差?
什么是地震龙?
生活中低血压怎么调养比较好
安阳红旗渠机场通航一周年:航线网络不断完善,区域枢纽作用日益凸显