gpt4 book ai didi

java - paintComponent 中的 while 语句

转载 作者:行者123 更新时间:2023-11-30 06:29:56 25 4
gpt4 key购买 nike

我正在尝试为我的游戏制作一个简单的图 block 系统。我制作了一个测试瓷砖,我正在尝试绘制 5 个相邻的瓷砖。我在我的 paintComponent 中做了一个 while 语句,它从 5 开始倒计时,每次它绘制一个图 block 并将 10(图 block 的大小)添加到当前 x 值。但由于某种原因,没有一个瓷砖出现。如果我注释掉 while 语句,则会显示一个图 block 。所以正在加载图像。由于某种原因,while 语句弄乱了绘画。非常感谢您的帮助。

这是我的 paintComponents 代码

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

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

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

另请注意 Walter 的调整:

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

代替:

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

关于java - paintComponent 中的 while 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11030297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com