微信开发者工具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),
最终效果
热门推荐
退宽带,你需要准备这些“通行证”
19岁女孩当电商老板,年收5亿,女老板为什么都会搞钱?
句句不提秋,句句秋意浓!带孩子一起背诵关于秋天的经典古诗词
利差管理法在金融投资中的应用与策略解析
RPG Maker:战斗系统设计与优化
法国原产地众多,它们绑定的葡萄品种是什么?
声控灯编程原理是什么
健身俱乐部管理:策略与实践
如何分析股市的趋势?股市趋势受哪些因素影响?
出生地在八字算命中代表什么,八字出生地的范围应该怎么论
设计,让体育馆不成“体”统
金价屡创新高还能“上车”吗 理财师建议谨慎观察
“浪姐”到“乘风”观众真正期待的是什么
《黄帝内经·上古天真论》的养生智慧(逐句详释)
游戏大年!2025最值得玩的10款国产独立游戏,强推入库!
审计独立性是什么?包括什么内容?
高速公路路网规划与管理策略探讨
用DeepSeek创作小说的完整流程指南
主流CFD仿真软件概述与比较
如何通过论文查重:实用技巧与策略
取保候审在什么时候申请最合适
TED演讲如何学英语?这几招超管用
CAN与CAN FD在新能源汽车中的应用及电磁兼容分析
光纤传感器选型全攻略
感冒发烧是好事还是坏事?
危险货物如何安全运往欧洲?你需要知道的ADR、RID、ADN法规
中电联携手14家充换电运营商,发布春节充换电服务保障行动倡议书
如何使用“磁盘工具”修复 Mac 储存设备
换离合器三件套工时费是多少?
十代思域加4升机油正常吗?机油容量建议