微信开发者工具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),
最终效果
热门推荐
私营加油站提供免费洗车,车主挺开心,加油站也挺开心而且还怕你不来呢?
六大茶类养生功效与搭配指南
如何选择合适的色谱柱进行样品分析?
来电显示收费成灯下黑,老用户困在运营商的套路里
@高校学生,如何提升就业能力?这份“双千”计划了解一下!
乳胶床垫能晒吗?一文详解乳胶床垫的正确保养方法
透支现金流怎么办:专家支招应对财务困境
辨认生产日期保质期的软件
香港银行账户命名规则解析:名称中能包含空格吗?
本溪龋齿补牙存在危险吗
钱塘井事:李泌开六井与杭州千年繁华
无线充QI2.0是什么认证?全方位解读其重要性
私企职称评定(2024评审流程)
私营企业职称评定条件及申报指南
水光针可以祛斑美白吗?真相揭秘
这些水光基础常识的小科普、你知道吗?
综合利率计算:贷款成本的全面分析
好消息!湖南理工学院将更名为湖南理工大学!
培育一盆健康的菊花(如何种植和护理菊花,让它们茁壮成长)
游戏助手十大常见功能解析:轻松提升游戏体验
微流控芯片制造技术:确保高精度与复杂性的关键
咖啡豆价格疯涨,"9块9"还能喝多久|回眸2024·展望2025
网贷还款压力:收入占比难以承受的情况分析
铁和叶酸补血指南:专家教你如何补血更有效!
贫血吃什么补血的效果比较好呢
精准追溯:从概念到实践
量子启发式算法在云计算资源分配中的应用与挑战
枯树怎样才能起死回生呢?老农分享三招,春天发新芽!
天津市“艺文兼备”青年书法作者培训班创作成果展览暨青年书法人才培养座谈会在津举办
2025麻醉学专业就业前景及方向:好找工作吗?