- 当前 Bug 的表现(可附上截图)
Component中canvas的draw回调函数无法进入, 只打印了1
- 预期表现
回调函数会进入,并打印1 和 2
- 复现路径
见Demo
- 提供一个最简复现 Demo
const context = wx.createCanvasContext('xx_canvas');
context.setFillStyle('red')
context.fillRect(10, 10, 150, 100)
console.log("1");
context.draw(false, function(e) {
console.log("2");
// do something...
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 650,
height: 960,
canvasId: 'xx_canvas',
fileType: 'png',
success: function (res) {
let pic = res.tempFilePath;
console.log(pic);
wx.previewImage({
urls: [res.tempFilePath],
})
}
});
})
只打印了“1”,未打印2.
Draw回调加延时换成setTimeout就好了,代码如下
const context = wx.createCanvasContext(
'xx_canvas'
);
context.setFillStyle(
'red'
)
context.fillRect(10, 10, 150, 100)
console.log(
"1"
);
context.draw(
false
, setTimeout(
function
(e) {
console.log(
"2"
);
// do something...
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 650,
height: 960,
canvasId:
'xx_canvas'
,
fileType:
'png'
,
success:
function
(res) {
let pic = res.tempFilePath;
console.log(pic);
wx.previewImage({
urls: [res.tempFilePath],
})
}
});
},300))
谢谢,可以了。
draw的callback函数外面包一层等待canvas渲染的时间,不同设备有部分差异,200毫秒基本都能满足
const context = wx.createCanvasContext('xx_canvas', this)
wx.canvasToTempFilePath 也要加上第二个参数 this
模拟器中调试加了this还是无法进入哈。
wx.canvasToTempFilePath 第二个参数加上this也无法进入,报"canvasToTempFilePath: fail canvas is empty" 错误。
你好,请问你的问题怎么解决的,我也遇到这个问题了
再读一遍API~
https://developers.weixin.qq.com/miniprogram/dev/api/wx.createCanvasContext.html
需要加第二个参数加this? 加了还是不行。
不好意思,看了文档也没看明白,第二个参数到底该传什么,是this吗
组件里使用要传this,如果canvas的宽高是动态设置的,还要setTimeout才行
嗯嗯,问题解决了,上次也是您帮忙解决了问题,非常感谢
不客气~