Frage von gut4fr5g4, 77

Warum flackern die objekte im spiel javaFX?

Ich habe ein spiel gecodet (the worlds hardest game) bin zwar noch nicht weit, aber die objekte flackern und bleiben random stehen bzw frieren dann ein, was habe ich flasch gemacht?

Habe den code extra übersichtlich geschrieben (es zumindest probiert, man kann nicht von jetzt auf heute zum profi werden...):

http://textuploader.com/589rl

ich hoffe mir kann einer helfen

Expertenantwort
von KnusperPudding, Community-Experte für Java, 13

Hab mir das auch mal angeschaut, daher folgendes:

  1. In deiner Klasse: "Spielfeld" erstelle eine Methode: "moveElement". Hierbei übergibst du als Parameter mindestens dein Gegner-Rectangle. Die Methode soll die Auf- und Ab-Bewegung machen.
  2. Die Methode "moveElement" rufst du in einem Platform.runLater() auf.
  3. Da du deine Gegner-Elemente in einer Array speicherst und mehrere Threads darauf zugreifen, solltest du deine Gegner-Array als volatile deklarieren.

Aber ich bin mir ehrlich gesagt nicht sicher, ob TimerTask hier der richtige Weg ist. - Und vermute dass du so auf kurz oder lang auf andere Probleme stoßen wirst. 

Ich würde dir eher dazu raten für das Animieren deiner Gegner Timeline mit KeyFrames zu nutzen, Beispiel:

KeyValue xValue = new KeyValue(gegnerLevel1[0].xProperty(), 100);
KeyFrame keyFrame = new KeyFrame(Duration.millis(1000), xValue);
Timeline timeline = new Timeline();
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.setAutoReverse(true);
timeline.getKeyFrames().addAll(keyFrame);
timeline.play();
Kommentar von gut4fr5g4 ,

Danke! :D 

Die erste richtige Antwort, die kurz sachlich informativ und hilfreich ist! 

Antwort
von triopasi, 34

Kann das leider am Handy nicht wirklich anschaun, ich schau später mal.

ABER der Code ist nicht gut. MovePlayer(string ..). WARUM??? Da nimmt man ein enum! Sonst wer weiss ob es "righ"/"Rechts" oder "rechts" heißt??

Kommentar von gut4fr5g4 ,

Ja ok danke

Kommentar von triopasi ,

Verbesste deinen Code erstmal (Stichwort "Refactoring")

Kommentar von gut4fr5g4 ,

Danke, wenigstens ne Antwort, die nicht zu 50% aus beleidugungen besteht und wenigstens informativ ist, danke dir

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten