之前内存回收有些问题会偶现闪退,我们已经在 v7.0.9 上修复了。
使用canvas2d后微信闪退用了canvas2d后, 现在开发版跑了一会, 之后切到线上小程序后直接微信闪退。 一个月前也尝试用2d, 同样遇到闪退问题, 我以为还不稳定, 到现在了还是稳定复现闪退。 我的手机偶尔会出现内存不足小程序强制退出的情况, 不知道和这个有关系没有
2019-12-232.9.0 及以上版本都要设置一下 canvas 的宽高。默认是 300x150 的。 [代码]const dpr = wx.getSystemInfoSync().pixelRatio[代码] [代码]canvas.width = 300 * dpr[代码] [代码]canvas.height = 150 * dpr[代码] [代码]ctx.scale(dpr, dpr)[代码]
canvas 2d 画圆BUGctx.drawImage 2.8.3 版本与 2.9.0+版本 结果不一致 2.8.3 [图片] 2.9.0+ 版本变形了 [图片] 真机情况: [图片] [图片] 代码片段: https://developers.weixin.qq.com/s/xV8hwfmg7ydmgdk gkd gkd!
2019-11-29这个问题我们排查下,可以先用 canvas.createImageData 接口来创建 ImageData https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.createImageData.html
canvas 2d真机预览是putImageData不生效?2d类型的canvas,putImageData在真机预览时不管用。开发工具里是可以的。线上未知。。 代码片段
2019-11-29这个问题我们已经在新版本上修复了。 另外,作为临时的解决方案,你可以试试把绘制任务放进 Promise 或 setTimeout 内延后一点执行,类似这样: [代码]canvas.requestAnimationFrame(() => {[代码][代码] [代码][代码]setTimeout(() => { [代码][代码]// render goes here })[代码][代码]})[代码]
cover-view随着时间增加,出现绑定事件延迟,而且延迟越来越大,如何解?[代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"page-body"[代码][代码] [代码][代码]style[代码][代码]=[代码][代码]'top:{{body_top}}px;left:{{body_left}}px;width:{{body_width}}px; height:{{body_height}}px'[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]camera[代码] [代码]class[代码][代码]=[代码][代码]"camera-layer"[代码][代码]></[代码][代码]camera[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]canvas[代码] [代码]class[代码][代码]=[代码][代码]"canvas-3d-layer"[代码][代码] [代码][代码]type[代码][代码]=[代码][代码]"webgl"[代码][代码] [代码][代码]id[代码][代码]=[代码][代码]"3d-canvas"[代码][代码] [代码][代码]disable-scroll[代码][代码]=[代码][代码]"true"[代码][代码] [代码][代码]bindtouchstart[代码][代码]=[代码][代码]"fn_touch_start"[代码][代码] [代码][代码]bindtouchmove[代码][代码]=[代码][代码]"fn_touch_move"[代码][代码] [代码][代码]bindtouchend[代码][代码]=[代码][代码]"fn_touch_end"[代码][代码] [代码][代码]>[代码][代码] [代码][代码]<[代码][代码]cover-view[代码] [代码]class[代码][代码]=[代码][代码]"Announcement"[代码] [代码]catchtap[代码][代码]=[代码][代码]"fn_click_test"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]cover-view[代码] [代码]style[代码][代码]=[代码][代码]"background:{{mycolor}}"[代码][代码]>test :{{delta}}</[代码][代码]cover-view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]cover-view[代码] [代码]bingtap[代码][代码]=[代码][代码]"fn_click_test2"[代码][代码]></[代码][代码]cover-view[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]cover-view[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]canvas[代码][代码]>[代码] [代码]</[代码][代码]view[代码][代码]>[代码]视图层级结构如上,对于cover-view上绑定的事件fn_click_test在IOS上,点击响应(延迟)会随着程序时间的增加而增加。但是canvas层上的事件却几乎感觉不到延迟(也就是表现正常),有人解答下吗? 实验:手机:IphoneXR / IphoneX 我注释掉<camera>标签,情况有所好转,仅仅是好转,过一会儿又不行了( fn_click_test 在IOS上,点击响应(延迟)会随着程序时间的增加而增加)。 打开<camera>标签,注释掉cavas下的threejs渲染逻辑,正常了。/** 从这里开始我怀疑是渲染效率的问题*/ 新建代码片段,发现还是正常的,猜测渲染影响了整个程序。 打开所有threejs渲染代码,在<canvas>上添加事件,发现<cover-view>标签事件出现延迟(随应用启动时间增大而增大),但是<canvas>事件正常。 完全懵圈,来此询问关于<cover-view>层事件传输机制的问题。 希望贵司技术同学能帮忙解答下。
2019-11-27可以继续用 canvasToTempFilePath 接口。不需要传递 canvasId,但是需要把 canvas 对象传递进去。 [代码]wx.canvasToTempFilePath({[代码][代码] [代码][代码]canvas: canvas[代码][代码]})[代码]下一个版本会支持上 canvas.toDataURL() 的接口。
新canvas 生成图片数据并保存新的canvas 使用canvas.toDateURL() 时候报错 [图片] 使用之前的方法 wx.canvasToTempFilePath不能进入该接口的任何回调(success/fail/complete)且代码也不会报错 希望文档中能给出一个解决方案
2019-11-13要根据 dpr 设置一下 canvas 的宽高。默认宽高是 300x150,所以会变形。 [代码]const dpr = wx.getSystemInfoSync().pixelRatio[代码][代码]canvas.width = width * dpr[代码][代码]canvas.height = height * dpr[代码][代码]ctx.scale(dpr, dpr)[代码]
通过 SelectorQuery 获取 Canvas 节点,绘图问题?[代码]<[代码][代码]canvas[代码][代码] [代码][代码]type[代码][代码]=[代码][代码]"2d"[代码][代码] [代码][代码]id[代码][代码]=[代码][代码]"canvas"[代码][代码] [代码][代码]style[代码][代码]=[代码][代码]"width: 100%; height: 500px;"[代码][代码]></[代码][代码]canvas[代码][代码]>[代码][代码]Page({[代码][代码] [代码][代码]data: {[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码][代码]() { [代码][代码] [代码][代码]// 通过 SelectorQuery 获取 Canvas 节点[代码][代码] [代码][代码]wx.createSelectorQuery()[代码][代码] [代码][代码].select([代码][代码]'#canvas'[代码][代码])[代码][代码] [代码][代码].fields({[代码][代码] [代码][代码]node: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码].exec([代码][代码]this[代码][代码].init.bind([代码][代码]this[代码][代码]))[代码][代码] [代码][代码]},[代码][代码] [代码][代码]init(res) {[代码][代码] [代码][代码]const canvas = res[0].node[代码][代码] [代码][代码]const ctx = canvas.getContext([代码][代码]'2d'[代码][代码])[代码][代码] [代码][代码]this[代码][代码].drawPath(ctx)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]drawPath(ctx){[代码][代码] [代码][代码]var[代码] [代码]dwidth = 800 / 80.0;[代码][代码] [代码][代码]var[代码] [代码]pos = Math.ceil(Math.random() * 75) + 30;[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < 80; i++) {[代码][代码] [代码][代码]ctx.beginPath();[代码][代码] [代码][代码]ctx.moveTo((i * dwidth), pos);[代码][代码] [代码][代码]var[代码] [代码]pos2 = Math.ceil(Math.random() * 75) + 30;[代码][代码] [代码][代码]ctx.lineTo(((i + 1) * dwidth), pos2);[代码][代码] [代码][代码]pos = pos2;[代码][代码] [代码][代码]ctx.stroke();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]ctx.strokeStyle = [代码][代码]"green"[代码][代码];[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 10; i < 80; i++) { [代码][代码]//清除后半部份继续绘制[代码][代码] [代码][代码]ctx.clearRect((i * dwidth), 0, ((i + 1) * dwidth), 150);[代码][代码] [代码][代码]ctx.beginPath();[代码][代码] [代码][代码]ctx.moveTo((i * dwidth), pos);[代码][代码] [代码][代码]var[代码] [代码]pos2 = Math.ceil(Math.random() * 75) + 30;[代码][代码] [代码][代码]ctx.lineTo(((i + 1) * dwidth), pos2);[代码][代码] [代码][代码]pos = pos2;[代码][代码] [代码][代码]ctx.stroke();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码] [代码]})[代码][图片][图片] 开发工具中显示是清晰的,在真机预览是模糊的,麻烦帮忙看一下是哪里的问题?
2019-10-28公共库 2.9.1 之后相机会统一采用居中等比缩放的裁剪方式。 并在后续版本会支持 frame 对齐相机视图。
强烈要求 onCameraFrame 取帧图 可以设置截取图标准?在取帧图的时候 可以直接设置取图范围 在各个手机都要计算 尤其安卓手机尺寸不一 实际的视频画布 与camera组件呈现的 不一致 还有 最近iphone 11手机 截取又是不一样 请给一个截图的标准
2019-10-14camera 有录像的接口,直接调用按个接口就可以。帧数据是用来做实时图像处理的。
小程序的camera的实时帧数据怎么用?想做人脸识别,调用了camera组件来录像,获取到实时帧数据后,不知道该怎么使用? 每一帧是一个图像?[图片]
2019-10-11这个问题已知了,我们下个版本会修复。这里主要是因为通过 wx:if 控制 canvas 的时候会销毁画布,但是 requestAnimationFrame 仍然在运行,绘制到一块已经销毁的画布上导致闪退。你可以: 在隐藏画布之前手动做一下 cancelRequestAnimation 把循环先停止。
通过 wx:if 控制新版 Canvas 接口渲染内容显隐会导致微信闪退 当使用 wx:if 控制新版 canvas 显隐时(https://developers.weixin.qq.com/community/develop/doc/00020a02c2c040114d19a398f5b001?highLine=canvas),会导致微信 App 闪退。iOS 版本 13.1.2 [代码]<canvas[代码][代码]wx:[代码][代码]if[代码][代码]=[代码][代码]"{{show}}"[代码][代码] [代码][代码]type=[代码][代码]"2d"[代码][代码] [代码][代码]id=[代码][代码]"canvas"[代码][代码] [代码][代码]style=[代码][代码]"width: 300px; height: 300px;"[代码][代码]></canvas>[代码] [代码]<button bindtap=[代码][代码]"showHide"[代码][代码]>显示/隐藏</button>[代码]视频链接:https://share.icloud.com/photos/0t16pVlvARSgj0vp5yfoyow8Q
2019-10-10新的 canvas 接口默认支持同层渲染了, camera 组件我们也正在切同层。如果你有覆盖的需求,建议先使用旧的 canvas 接口,等 camera 也同层之后新接口就可以覆盖了。
canvas type='2d' 与 camera 层级问题 ?通过延迟设置: canvas wx.createCanvasContext() 模式 能在camera之上(安卓、ios都行) 修改后 新接口canvas type = “2d” 模式 (所有安卓无效,IOS12+无效)
2019-09-27