canvas遮挡了底部按钮,canvas在组件的组件内,按钮在页面
方法一:
cover-view包裹页面按钮,ios没问题,安卓还是被canvas遮挡;又把按钮放到组件内,嵌套在canvas内还是被遮挡;
方法二:
2、canvas转图片,ios没问题,安卓draw()的回调不执行,下面的代码只能打印到‘开始画’,然后就是fail了。
查了论坛,发现近期很多人碰到canvas的draw()回调不执行的问题,希望官方大大能看到这篇文章,并排查一下问题。多谢~
setTimeout(() => {
console.log('开始画');
ctx.draw(true, () => {
console.log('开始转换');
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 690,
height: 552,
canvasId: canvasId,
success: res => {
console.log('success', res.tempFilePath)
},
fail: err => {
// eslint-disable-next-line
console.log('fail', err, err.stack);
}
}, this);
});
}, 4000);
我也遇到同样的问题,在网上找了说ctx.draw(true)改为ctx.draw(false)就行,但是测试了画布会变空白,达不到想要的效果,后来我改成
ctx.fillStyle="#10131c"; ctx.draw(true,function(){ 执行 })
在ctx.draw的前面加一步绘画操作,就能成功回调了,希望能帮到大家
兄弟解决了吗?碰到一样的问题,求解决方案
已经解决了啊,看下面的回复,你试下
谢谢!折腾了我两天的问题在你这解决了,谢谢!
哈哈哈~开心...
加个WeChat一起交流嘛。 aW1fbXJfbHlubg==
遇到同样的问题,canvas放在组件内 draw() 回调不执行,放在 page内,可以
canvas.draw(true, setTimeout(() => {
this.canvasToImage(); // canvas转图片的操作
}, 1000));
你尝试这样试试看,我这边是可以了
你这等同于
canvas.draw(true)
setTimeout(() => this.canvasToImage(), 1000)
渲染时间超过一秒就挂了。。。
这不等同吧...
CanvasContext.draw(boolean reserve,function callback)
其中 function callback 是绘制完成后执行的回调函数
你需要補一下js基礎。。。。,你傳進去的callback就是一個timerId
那你就把延迟时间设长点,这是目前我能解决的方法
如果你有更好的,欢迎提供
提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。