【发布时间】:2013-08-03 01:30:26
【问题描述】:
我正在开发一个小地图编辑器,只是为了了解 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;
};
item-object 的样子:
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-小提琴
“问题”
有人知道这个问题吗?我已经在谷歌上搜索了几个小时,但由于我不确定要搜索什么,所以很难找到。
非常感谢! 鲍里斯
【问题讨论】:
-
你为什么使用模式?只是好奇,因为你可以使用
.drawImage。