Javascript 这是HTML5中的错误还是我疯了?
我是疯了还是以下是HTML5中的一个bug 我正在编写类似“游戏地图”的东西。它非常简单,下面是绘图代码:Javascript 这是HTML5中的错误还是我疯了?,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,我是疯了还是以下是HTML5中的一个bug 我正在编写类似“游戏地图”的东西。它非常简单,下面是绘图代码: g2d.clearRect(0, 0, width, height); for(var i = minx; i < maxx; i++){ for(var j = miny; j < maxy; j++){ var drawx = i * tileWidth + posx;
g2d.clearRect(0, 0, width, height);
for(var i = minx; i < maxx; i++){
for(var j = miny; j < maxy; j++){
var drawx = i * tileWidth + posx;
var drawy = j * tileHeight + posy;
g2d.drawImage(images["image0"], drawx, drawy);
g2d.fillText("x: " + i, drawx + 3, drawy + 10);
g2d.fillText("y: " + j, drawx + 3, drawy + 20);
g2d.rect(drawx, drawy, tileWidth, tileHeight);
g2d.stroke();
}
}
for(var i = 0; i < bases.length; i++){
var position = bases[i]["position"].split(":");
var x = parseInt(position[0]);
var y = parseInt(position[1]);
g2d.drawImage(images["image1"], x * tileWidth + posx, y * tileHeight + posy);
}
在fillText()内容之后突出。
结果是令人遗憾的:
它落后了,而且似乎东西没有清理干净。
上面是什么?
有人知道如何解决这个问题吗
谢谢大家! 打开这个:
g2d.rect(drawx, drawy, tileWidth, tileHeight);
g2d.stroke();
进入:
而且您不会有路径问题(以牺牲一点性能为代价)。或者,在开始循环之前使用beginPath()
原因是rect会添加到路径并累积。每次调用stroke()时,都会重新绘制路径中的所有内容。beginPath()将清除路径,而Strokert()是一种直接光栅化方法,不会添加到路径中
例如:
g2d.beginPath();
for(var i = minx; i < maxx; i++){
for(var j = miny; j < maxy; j++){
var drawx = i * tileWidth + posx;
var drawy = j * tileHeight + posy;
g2d.drawImage(images["image0"], drawx, drawy);
g2d.fillText("x: " + i, drawx + 3, drawy + 10);
g2d.fillText("y: " + j, drawx + 3, drawy + 20);
g2d.rect(drawx, drawy, tileWidth, tileHeight);
}
}
g2d.stroke();
g2d.beginPath();
对于(var i=minx;i
转动此按钮:
g2d.rect(drawx, drawy, tileWidth, tileHeight);
g2d.stroke();
进入:
而且您不会有路径问题(以牺牲一点性能为代价)。或者,在开始循环之前使用beginPath()
原因是rect会添加到路径并累积。每次调用stroke()时,都会重新绘制路径中的所有内容。beginPath()将清除路径,而Strokert()是一种直接光栅化方法,不会添加到路径中
例如:
g2d.beginPath();
for(var i = minx; i < maxx; i++){
for(var j = miny; j < maxy; j++){
var drawx = i * tileWidth + posx;
var drawy = j * tileHeight + posy;
g2d.drawImage(images["image0"], drawx, drawy);
g2d.fillText("x: " + i, drawx + 3, drawy + 10);
g2d.fillText("y: " + j, drawx + 3, drawy + 20);
g2d.rect(drawx, drawy, tileWidth, tileHeight);
}
}
g2d.stroke();
g2d.beginPath();
对于(var i=minx;i
hm,我试试这个。这两件事的区别在哪里?是的,它非常滞后。我不能用网格拖动地图,因为它是用网格运行的≈1.fps?是的,它很有效,thx非常加密和视觉。!但是为什么呢?区别在哪里?啊,好的。非常感谢。有没有类似于api的东西,人们可以阅读类似的东西?@T_01规范中有很多细节:但当然,它针对的是浏览器实现者,因此并非所有内容都与我们用户相关。嗯,我会试试这个。这两件事的区别在哪里?是的,它非常滞后。我不能用网格拖动地图,因为它是用网格运行的≈1.fps?是的,它很有效,thx非常加密和视觉。!但是为什么呢?区别在哪里?啊,好的。非常感谢。有没有类似于api的东西,人们可以阅读类似的东西?@T_01规范中有很多细节:但当然,它针对的是浏览器实现者,因此并非所有内容都与我们用户相关。