最近几天我一直在遇到问题....所以我正在用GUI编写一个小游戏,但是我的问题是启动程序时背景图像无法立即显示。因此,这里有一个向我展示问题的youtube视频的链接:https://www.youtube.com/watch?v=v420OErObLI
我认为问题可能是多次调用了paint方法,并且由于某种原因未显示图像。在下面的代码中,您可以找到paint方法,如果有人可以帮助我::
public void paint(Graphics g)
{
super.paint(g);
this.paintBG(g);
if (this.paintPlayer && bgDrawn)
{
// Spieler versuchen zu zeichnen auf startpositionen
spielfeld.setPlayerListToFront();
spielfeld.setEnemyPlayer1ListToFront();
spielfeld.setEnemyPlayer2ListToFront();
spielfeld.setEnemyPlayer3ListToFront();
while (spielfeld.playerHasAccess()
&& spielfeld.gegenspieler1HasAccess()
&& spielfeld.gegenspieler2HasAccess()
&& spielfeld.gegenspieler3HasAccess())
{
this.paintPosition(spielfeld.getOwnPlayer().getCurrentX(), spielfeld.getOwnPlayer().getCurrentY(), g);
this.paintPosition(spielfeld.getGegenspieler1().getCurrentX(), spielfeld.getGegenspieler1().getCurrentY(), g);
this.paintPosition(spielfeld.getGegenspieler2().getCurrentX(), spielfeld.getGegenspieler2().getCurrentY(), g);
this.paintPosition(spielfeld.getGegenspieler3().getCurrentX(), spielfeld.getGegenspieler3().getCurrentY(), g);
spielfeld.nextPlayer();
spielfeld.nextEnemyPlayer1();
spielfeld.nextEnemyPlayer2();
spielfeld.nextEnemyPlayer3();
}
// Spieler versuchen zu zeichnen auf normalen positionen
for (int i = 0; i < spielfeld.getSpielfeldSize()-1; i++)
{
this.paintPosition(spielfeld.getCurrentSlot(i).getX(), spielfeld.getCurrentSlot(i).getY(), spielfeld.getCurrentSlot(i).getColor(), g);
this.paintPosition(spielfeld.getCurrentSlot(i+1).getX(), spielfeld.getCurrentSlot(i+1).getY(), red, g);
try
{
Thread.sleep(animationSpeed);
}
catch (Exception e)
{
errorMessage = e.getMessage();
}
}
this.paintPosition(spielfeld.getCurrentSlot(spielfeld.getSpielfeldSize()-1).getX(), spielfeld.getCurrentSlot(spielfeld.getSpielfeldSize()-1).getY(), spielfeld.getCurrentSlot(spielfeld.getSpielfeldSize()-1).getColor(), g);
this.paintPlayer = false;
}
}
public void paintPosition(int x, int y, Color c, Graphics g)
{
g.setColor(c);
g.fillOval(x, y, spielfeld.getSlotWidth(), spielfeld.getSlotHeight());
}
public void paintBG(Graphics g)
{
// Spielfeld laden
g.drawImage(Toolkit.getDefaultToolkit().getImage("img/background.png"), 0, 0, this);
bgDrawn = true;
}