2017-01-05 78 views
0

我有一个100x100像素瓷砖地图。当我尝试在我的浏览器上打开我的游戏时,页面会冻结,因为要绘制10000个图块。你怎么能画出这么多瓷砖没有问题。 我draw()函数:瓷砖地图绘画画布

this.draws = function(){ 

    for(j = 0; j < 10000; j++){ 

     this.i = levels[1][1][j] - 17*Math.floor(levels[1][1][j]/17) 
     game.ctx.fillStyle = "red" 
     game.ctx.drawImage(game.tiileset,(this.i-1)*this.cellW,(Math.floor(levels[1][1][j]/17))*16,this.cellW,this.cellW,(j-100*Math.floor(j/100))*this.cellW-1,(Math.floor(j/100)+1)*this.cellW,this.cellW,this.cellW) 


    } 

} 
+0

您应该只绘制当时屏幕上的内容。让它在滚动时填充。如果将其缩小,则图像应该具有较小版本,这些版本会在不同的缩放范围内呈现。 – Grallen

+0

所有的Math.floor(...)都会裁剪正确的图像并将其放在正确的位置。 levels [1] [1]是tilemap级别的数组[1] [1] [j]是for循环中的当前图块ID –

回答

1

I'm不确定什么you're试图做的,但它看起来像you're从图像到画布上绘制每个像素。

如果确实是这种情况,我建议您只是一次绘制整个图像。

如果不是这样,我真的需要一个更详细的问题,或许在你的代码中有更多的数学解释。

哦,是的,不要忘记分号。

+0

我将图像的每个图块绘制到画布上,就像它应该在tilemap的。 –

+0

我看到也许这会帮助你(https://developer.mozilla.org/en-US/docs/Games/Techniques/Tilemaps)它有一个表演部分 – syrupsnob

+0

是的非常感谢 –