/**
* 上层画布
*/
const canvas = wx.createCanvas()
const context = canvas.getContext('2d')
//画背景
context.fillStyle = "#90d7ec";
context.fillRect(0, 0, DeviceInfo.windowWidth, DeviceInfo.windowHeight)
/**
* 双层for循环开始绘制气泡
*/
for (let i = 0; i < column_count; i++) {
let start_y = i * image_width + (i + 1) * space + y;
for (let j = 0; j < row_count; j++) {
let start_x = j * image_width + (j + 1) * space;
let bubble = new Bubble(context, false, start_x, start_y)
bubbles.push(bubble)
}
}
我的代码逻辑很简单,绘制就两个地方用到,第一次先绘制背景,也就是fillRect,然后在for循环里绘制气泡,也就是drawImage
/**
* 往画布上画具体的内容
*/
canvas() {
let image = wx.createImage();
image.src = this.broken ? destroy_img : perfect_img;
image.onload = () => {
this.context.drawImage(image, this.x, this.y,image.width,image.height,)
}
}
模拟器里表现完美,但是到真机上背景就是一片黑
模拟器:
真机:
另外,api文档上明确的说有cxt.draw()这个方法,为什么我调用一直报错,说没有这个方法,是文档没有更新还是我使用有问题,麻烦帮我看一下,真的太感谢了。
遇到同样问题, 目前看可能是异步onload,或者settimeout后调用的canvas绘制会清空(遮挡?)之前绘制的内容
不知道啊,draw(true/false) 和 save restore 两者的区别也傻傻的分不清啊 哈哈