微信开发者工具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),
最终效果
热门推荐
事关孩子开学!家长赶紧看
嘴巴发苦别大意 可能是你的身体在呼救
卷积核详解:从基本概念到各类变种的动画演示
无动力乐园的环境创设与体验提升
心脑血管病患者可以吃花生吗?医生的专业解答来了
30年军旅生涯,军衔大校,退伍专业的刘玉栋如今级别待遇如何?
司马南偷税被罚背后的流量生意
营销又翻车!司马南扮装李白惹争议,西凤酒紧急发文规范推广
学吉他没有绝对的最佳年龄,不同阶段各有优势
推挽输出与开漏输出详解
全面解析:线上开通香港银行卡的步骤和注意事项
长白山天池水怪真相揭秘:专家称或为史前生物或光学现象
电脑输入法图标不见了?一招教你快速恢复显示
油车什么时候会退出市场
患者在化疗期间发生恶心、呕吐等症状怎么办?
STL之关联容器(map ,set)
知天命指的是多少岁?解密这个成语背后的文化内涵
河北推进婚俗改革:零彩礼、简办婚礼渐成新风尚
秋天的养生秘笈:五款适合秋天的中草药茶饮
【STM32编程中的电阻设置】:上拉_下拉,优化你的GPIO代码
如何缓解上臂麻木
中国长途客车模拟游戏推荐2025 好玩的模拟客车手游大盘点
如何看手机测评数据库
如何通过优化应付账款周转天数提升企业资金效率
从基础到实践:LDO的应用指南
泉州红砖古厝诗句
养孔雀鱼应该怎样换水
老式手枪零件详解:六大部件的功能与作用
枪为什么要拉一下
昆明旅游必去十大景点:七彩云南的魅力宝藏地大赏