2

我正在尝试为我的游戏制作一个简单的瓷砖系统。我做了一个测试瓷砖,我正在尝试将 5 个瓷砖彼此相邻绘制。我在我的paintComponent地方做了一个 while 语句,它从 5 开始倒计时,每次它绘制一个图块并将 10(图块的大小)添加到当前 x 值。但由于某种原因,没有一个瓷砖出现。如果我注释掉 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--;
        }
    }
}
4

2 回答 2

3

改变

while(numOfTiles > 0){ 

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

并删除:

    numOfTiles--;

解释。我怀疑numOfTiles在第一次油漆中被减少到 0 并且永远不会被重置。for循环通过从不改变值来解决这个问题。

还要注意沃尔特的调整:

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

代替:

    g.drawImage (chosenTile, tileStartx, tileStarty, this);
    tileStartx += 10;
于 2012-06-14T10:00:04.150 回答
2

试试这个,

for (int i : numOfTiles){

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

        }
于 2012-06-14T10:06:11.317 回答