微信开发者工具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),
最终效果
热门推荐
第五人格角色深度剖析:先知技能全解析及其与盲女技能对比
中职轻轨专业就业前景
短视频创业指南:个人创作者如何实现盈利
《战地2042》武器装备图鉴
协方差矩阵的几何解释
感应钥匙失灵?先别慌,检查这五个原因即可
描写战争场面的四字词语有哪些
生命的价值与人生的意义:懂得自己,努力前行
申请仲裁的条件及网络仲裁裁决书效力认定
苹果扣费如何轻松申请退款,不再做冤大头!
轻微眼袋问题是否可以通过使用眼霜得到改善?眼霜真的有效吗?
成都亲子游攻略:5个适合孩子的游玩场所及详细活动指南
剧集评论:浙产剧《我的后半生》:爱与成长的现代诗篇
欧阳明高院士团队揭示固态电池复合正极的热失控机制
超过4亿中国人铝元素摄入超标,为什么我们依旧在,用铝锅做饭?
“频繁放屁”是咋回事?真的是在排毒吗?医生为您解开疑惑
CF风暴女和娟娟大比拼!谁才是真正的游戏王者?
新型药物缓解困扰数亿女性的问题!JAMA:治疗更年期症状,还改善这2大指标
“想象力”变“生产力” 科幻产业点燃未来引擎
英雄联盟四大赛区介绍
哪吒2对中国文化意味着什么?——从动画电影看文明复兴的三重觉醒
《新神榜:杨戬》:东方美学的极致绽放与角色魅力的深度挖掘
朱顶红春季盆栽种植指南:从选材到养护的全方位详解
广州周边游玩景点推荐
这些食物都有抗炎属性!研究证实:这样吃能降低全身炎症水平
3060TI vs 4060:深度解析显卡性能与预算平衡选择
ENFJ和ISTP是相反人格:探索这两种人格的差异与互补性
小区监控业主可以随便调看吗?小区监控一般保存多久?
磊科路由器怎么重新设置(磊科路由器恢复出厂后怎么上网)
不向机器「让步」,人类如何与AI共生共智?