为什么这个图形循环会冻结我的gui?

时间:2013-08-09 00:21:52

标签: java loops user-interface

所以在我看来这段代码看起来不错,但我不能说它是好的因为它冻结了整个绘画循环。没有任何抵消麻烦之前,它运作良好。

    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);
    }

1 个答案:

答案 0 :(得分:3)

问题在于它是无限的。

你的情况:

canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX

永远都是假的,因为这些价值都没有变化。


我认为您想要做的是在draw电话后拨打这些电话。

canvasY = offsetY + y;
canvasX = offsetX + x;