我正在尝试为我的游戏制作一个简单的图块系统。我做了一个测试图块,并且试图将5个图块彼此相邻地绘制。我在paintComponent中做了一个while语句,它从5开始递减计数,每次绘制一个图块并将当前x值加10(图块的大小)。但是由于某种原因,所有磁贴都没有出现。如果我注释掉while语句,则会显示一个图块。因此,正在加载图像。由于某种原因,while语句使绘画变得混乱。非常感谢您的帮助。

这是我的paintComponents中的代码


变量numOfTiles = 5
变量tileStartx = 100;
变量selectedTile是我的图像。




public void paintComponent(Graphics g){
    super.paintComponent(g);
    if(tileToDraw != null){
        while(numOfTiles > 0){
            System.out.println(tileStartx);
            g.drawImage (chosenTile, tileStartx, tileStarty, this);
            tileStartx += 10;
            numOfTiles--;
        }
    }
}

最佳答案

更改

while(numOfTiles > 0){




// or the more modern variant shown by Kumar
for (int count=0; count<numOfTiles; count++) {


并删除:

    numOfTiles--;


说明。我怀疑在第一个绘制中被减小为0,并且从未重置。 numOfTiles循环通过从不更改值来解决此问题。

还要注意沃尔特的调整:

    g.drawImage (chosenTile, tileStartx + (count * 10), tileStarty, this);


代替:

    g.drawImage (chosenTile, tileStartx, tileStarty, this);
    tileStartx += 10;

10-07 13:18