2017-01-28 2 views
1

Ich versuche, ein einfaches animiertes Menü mit Bildern um den Bildschirm abprallen zu lassen, aber die Bilder hinterlassen eine Spur wo immer die Bewegung.JavaFx Stop Moving Image Verschmutzte Leinwand

public void handle(long now) { 
     // TODO Auto-generated method stub 
     boolean intersectFlag = false; 
     for(Letter l : letters){ 
      gameMenuGraphicsContext.drawImage(l.letterImage, l.letterRectangle.getX(), l.letterRectangle.getY()); 
      l.moveSimple(); 
     }  
    }}; 

Haben Sie eine Idee, wie Sie das verhindern können?

Antwort

0

Denken Sie an die Leinwand als ein Stück Papier, auf dem Sie schreiben. Wenn Sie nichts explizit löschen, wird alles sichtbar sein, was Sie jemals dazu gezogen haben. Eigentlich sollten Sie Ihre Entscheidung, ein Canvas zu verwenden, noch einmal überdenken. Es ist nicht sehr gut für solche Animationen geeignet.

0

Wie Mipa sagte, ist Ihr Problem, dass das gezeichnete Bild nie gelöscht wird. So löschen Sie Ihre Leinwand verwenden:

graphicsContext.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); 

Um sich nicht das sehr clearRect Methode jedes Mal, wenn Sie auf dem Bildschirm zeichnen anrufen möchten, eine einfache Schreib- und vergessen Art und Weise ist, das Clearing zu kombinieren und Zeichnung in eine Methode. Sie können sogar einen Lambda-Ausdruck verwenden, um auf dem canvas zu zeichnen, wie in dem folgenden Code: