我正在尝试绘制一个包含图像的保存的Konva.js阶段。它可以在台式机(Chrome和Safari)上正常运行,但不能在移动Chrome或移动Safari(iOS;我无法测试Android)上运行。
我已经使用console.log
来确认image.draw()
正在使用正确的资产在移动设备上启动,但是画布仍为空白。
我可能忽略了某些竞争条件,这种情况在移动设备上更为普遍?我是Konva和Canvas的新手,所以非常感谢您做出全面的答复。
下面包含了相关的JS代码:
var imageData = {
billy: {
x: 146,
y: 126,
src: '/assets/billy.png'
},
nox: {
x: 279,
y: 126,
src: '/assets/nox.png'
},
battleMap: {
x: 2100,
y: 2100,
src: '/assets/map.jpg'
}
};
socket.on('stage', data => {
var json = JSON.parse(data);
stage = Konva.Node.create(json, 'container');
mapLayer = stage.findOne("#mapLayer");
tokenLayer = stage.findOne("#tokenLayer");
var images = stage.find("Image");
images.map(image => {
var id = image.attrs.id;
var imageObj = new Image();
imageObj.onload = function() {
stage.findOne('#' + id).image(imageObj);
console.log("drawing " + imageObj.src);
image.draw();
};
imageObj.src = imageData[id].src;
});
});