我正在开发一个小地图编辑器,只是为了了解 HTML5 Canvas 和更好的东西。
我想做的事
我正在尝试加载 3 个项目:
- 2 块岩石
- 1个地精
我写了一个函数“drawItem(item)”,它应该在画布上画一个项目:
drawItem = function(item) {
var imageObj = new Image();
imageObj.onload = function() {
var pattern = context.createPattern(imageObj, 'repeat');
context.rect(gridSize*item.position[0], gridSize*item.position[1], gridSize, gridSize);
context.fillStyle = pattern;
context.fill();
};
imageObj.src = item.img;
};
项目对象的样子:
itemOne = {
img : 'https://lh3.googleusercontent.com/ZX4Zl7JT1gkgOVA9FbMFnMAw7TC9bBCVMSGWKFTmOW88vDTgcCOb7tBBo60nxoSdHQ=s190',
position : [0, 0] //these get multiplied with "gridSize" in the drawItem-function
};
现在问题来了:
如果我使用项目对象调用此函数,则该对象将正确绘制。
如果我使用 3 个不同的项目对象(请参阅 JS-Fiddle)调用此函数 3 次,则 2 个岩石项目顶部似乎有一个妖精。那是错误的。
JS-小提琴
“问题”
有谁知道这个问题?我已经在谷歌上搜索了几个小时,但由于我不确定要搜索什么,所以很难找到。
非常感谢!鲍里斯