2017-01-30 3 views
1

Ich versuche, mehrere Bilder auf dem Bildschirm hüpfen, aber nur das letzte Bild in der ArrayList erscheint.Schleife durch ArrayList nur das letzte Element in ArrayList auswählen

for(Letter l : Letters) { 
    clearAndDraw(gameMenuGraphicsContext, gc -> 
     gc.drawImage(
      l.letterImage, 
      l.letterRectangle.getX(), 
      l.letterRectangle.getY() 
     ) 
    ); 
    gameMenuGraphicsContext.drawImage(
     l.letterImage, 
     l.letterRectangle.getX(), 
     l.letterRectangle.getY() 
    ); 
    l.move(); 
} 

private void clearAndDraw(GraphicsContext gc, Consumer<GraphicsContext> draw) { 
    gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight()); 
    draw.accept(gc); 
} 

Wenn ich die clearAndDraw Codezeile zu entfernen, erscheinen beide Rechtecke, aber sie verschmieren den Bildschirm.

Gibt es eine Möglichkeit, dieses Problem zu umgehen?

Antwort

4

verschieben diese Zeile:

gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight()); 

Um vor Ihrer for Schleife. Dann wird der Bildschirm gelöscht, bevor alle Rechtecke gezeichnet werden.

Verwandte Themen