所以在我看来这段代码看起来不错,但我不能说它是好的因为它冻结了整个绘画循环。没有任何抵消麻烦之前,它运作良好。
int offsetX = 0;
int offsetY = 0;
for(int y = 0, canvasY = offsetY + y, x = 0, canvasX = offsetX + x; canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX; y++, x++) {
int tileToPaint = canvasX + (canvasY * mapWidth);
tileObject = getObject(tileToPaint);
int locationX = tileSize * x;
int locationY = tileSize * y;
draw(tileObject, locationX, locationY);
}
答案 0 :(得分:3)
问题在于它是无限的。
你的情况:
canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX
永远都是假的,因为这些价值都没有变化。
我认为您想要做的是在draw
电话后拨打这些电话。
canvasY = offsetY + y;
canvasX = offsetX + x;