微信开发者工具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章教你如何应对职场困境
冬季感冒咽喉炎,头孢氨苄片能随便吃吗?
集通铁路电气化改造工程全线新建隧道全部贯通
恩宁路微改造:广州最老街巷变身文化新地标
沈阳洗浴领跑全国:从百年澡堂到娱乐综合体
沈阳洗浴中心成旅游新宠:搓澡订单增40%,变身社交娱乐综合体
水温时间都要控,专家详解冬季泡澡正确姿势
美国五实验室、中国四机构,全球材料科学研究版图揭晓
开创纳米发电机领域,王中林院士全职加入中科院
如何提升基层管理者管理能力
水果挑选秘籍:让你一不小心就挑到了“心头爱”
核桃:健脑益智的秘密武器?
打字、制表、文件管理:文员必修的四大核心技能
档案管理,职场发展的隐形护盾
山核桃:来自高山的营养瑰宝
“偶像之死”:透视饭圈畸变与产业困局
冬月初一养生指南:1菜2肉3果,助力中老年人增强免疫力
筷子这样洗,立刻焕然一新,可惜知道的人太少!
办公室主任如何提升团队效率?四大管理方法详解
明确职责、量化考核:办公室岗位责任制提升效率全攻略
从职责到进阶:办公室岗位的职业发展路径
心理学悬疑剧《猎罪图鉴2》:从房树人测试看人性善恶
《猎罪图鉴2》:废仓藏尸案推理严谨,天坑案议题深刻
《猎罪图鉴2》创新刑侦剧:艺术手法破解悬疑案件
MACD揭示新股开板后的股价秘密