安卓 canvas组件draw函数的回调不执行
发布于 6 年前 作者 chaodeng 11462 次浏览 来自 问答

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);

5 回复

兄弟解决了吗?碰到一样的问题,求解决方案

谢谢!折腾了我两天的问题在你这解决了,谢谢!

我也遇到同样的问题,在网上找了说ctx.draw(true)改为ctx.draw(false)就行,但是测试了画布会变空白,达不到想要的效果,后来我改成

ctx.fillStyle="#10131c";
ctx.draw(true,function(){ 执行 })

在ctx.draw的前面加一步绘画操作,就能成功回调了,希望能帮到大家

提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

遇到同样的问题,canvas放在组件内 draw() 回调不执行,放在 page内,可以

回到顶部