4***@qq.com
4***@qq.com
  • 发布:2021-01-19 16:37
  • 更新:2021-01-21 17:29
  • 阅读:889

【报Bug】createCanvasContext.draw() APP不进入回调,H5正常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.0.5

手机系统: Android

手机系统版本号: Android 7.0

手机厂商: 华为

手机机型: SM-G250

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

CanvasSave() {
let _this = this;
_this.$CommonFunc.$ShowLoading();
if (_this.Saving == true) {
return;
}
_this.Saving = true;
var context = uni.createCanvasContext('firstCanvas',_this);
//画底图
context.drawImage(_this.PostersData.BgImageUrl, 0, 0, _this.PostersData.BgImageWith, _this.PostersData.BgImageHeight);
context.draw(true);

            //画文字,画图片  
            _this.PostersData.DataList.forEach(res => {  
                if (res.key == 'text') {  
                    context.beginPath();  
                    context = _this.DrawText(context, res.text, res.x, res.y, res.w, res.fontsize);  
                } else if (res.key == 'image') {  
                    context.drawImage(res.imgUrl, res.x, res.y, res.w, res.h);  
                    context.stroke();  
                } else if (res.key == 'ewm') {  
                    context.drawImage(res.ewmUrl, res.x, res.y, res.w, res.h);  
                    context.stroke();  
                } else if (res.key == 'tag') {  
                    context.beginPath();  
                    context = _this.DrawTag(context, res);  
                }  
                context.draw(true);  
            });  

            context.draw(true,function(){  
                console.log("进入draw回调"); //APP这里进不去  
            })  
        }

操作步骤:

context.draw(true,function(){
console.log("进入draw回调"); //APP这里进不去
})

预期结果:

控制台输出"进入draw回调"

实际结果:

控制台没有输出指定内容

bug描述:

APP使用createCanvasContext在进行draw时,进入不了回调...H5是正常的

2021-01-19 16:37 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com - 真的帅

给context.draw加个延时器试试?????

  • 4***@qq.com (作者)

    没用,加了10秒的延时一样没进入...

    2021-01-19 17:04

DCloud_UNI_GSQ

DCloud_UNI_GSQ

仅这个设备出现问题吗?其他设备是否正常?

  • 4***@qq.com (作者)

    测试了几个安卓机 都不正常

    2021-01-19 20:04

4***@qq.com

4***@qq.com (作者)

终于知道为什么了,drawImage不能直接使用网络图片了,必须将网络图片uni.downloadFile后再使用

7***@qq.com

7***@qq.com - 真的帅

我也是本来2.9.8版本好好的,更新到3.0.5后相同的代码,然后不走ctx.draw()了。图片路径就是用的getImageInfo()拿的,坑爹

  • 4***@qq.com (作者)

    如果本身用的是网络图片的话,通过getImageInfo拿到的还是网络图片,所以还是得downloadFile一下才行的。

    2021-01-23 10:45

该问题目前已经被锁定, 无法添加新回复