微信开发者工具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),
最终效果
热门推荐
C++拾趣——使用VSCode跨平台调试CMake编译的C/C++项目
车开一会就有一股烧焦味怎么回事
猫咪能否食用生鸡肉(探究猫咪食用生鸡肉的利弊和注意事项)
运动可以提高免疫力吗?这些运动方式助你增强免疫功能
赵云在三国的真实实力:勇武与智谋并存的传奇将领
家庭维修行业的破局者:啄木鸟平台化模式的深度剖析
机甲风格霸占童年 90年代的十五大动漫代表作
伽罗瓦(关于伽罗瓦的基本详情介绍)
尼龙(聚酰胺)家族的分类制备以及应用介绍大全
规模超744亿元,这类基金火了!
周鸿祎做 IP,不只是流量这么简单
紫汞:外伤小卫士的实用指南
揭秘家用电热水器正确安装方法:原来我家一直装错,难怪用不顺
波段交易的策略是什么?它如何影响短期收益?
子女放弃继承遗产,父亲生前负债还要还吗?法院判了!
父亲欠债死后子女要还吗
最快消除醉氧的方法
坐骨神经痛:症状、成因及4种运动疗法
丁苯酞软胶囊可改善卒中后失语
探索《黑神话:悟空》的游戏开发引擎:虚幻引擎5的力量
黑神话获奖!游戏中最真实的物理引擎是怎么实现的?简直不可思议……
肩膀一高一低是什么原因
城市生活新挑战,如何轻松应对尾号限行政策
藏书票的黄金时代:回望与前瞻
高考心理快速有效调整方法
部队考驾驶证吗
部队里可以考驾照吗?
淮滨县法院发布5起消费者权益保护典型案例
房子墙面漏水应该找谁解决问题?家庭维修小贴士
房子有公积金贷款可以过户吗