repaint während Thread läuft

  • Hallo, ich habe ein Problem mit einer Aufgabe, es geht im groben darum ein (simples) billardspiel zu programmieren, dazu habe ich ein JPanel Tisch welches das ganze zeug zeichnet, diese klasse besitzt ein objekt der klasse Ball. Ball implementiert Runnable und führt die bewegung des balles in der run()-methode aus (ändert dessen position forlaufend). Wenn ich nun das ganze ausführe dann seh ich nur wo sich der ball zu beginn und zu ende befindet. Wo mache ich hier was falsch, muss ich da den thread kurz anhalten weil es sonst zu schnell geht?!


  • Deine Schleife blockiert wohl den Thread, der für das Zeichnen verantwortlich ist (ist derselbe, der Events abarbeitet). repaint stellt nämlich nur einen Auftrag für das Neu-Zeichnen in eine Warteschlange, es ist aber kein Thread da, der diese Warteschlange abarbeitet.
    Lösung: Entweder das repaint in den Ball, oder separater Thread für das repaint (inkl. Wartepausen, ansonsten geht die Prozessorlast gegen 100 %).

  • Es ist ja anscheinend eh ein eigener Thread. poochie, ja klar wird’s im Thread zu schnell gehen. Du musst das von der Uhrzeit abhängig machen. Überleg dir, wie lange die ganze Animation dauern soll, und dann kannst du dir im Thread anhand der Startzeit und der aktuellen Zeit ausrechnen, wie weit der Ball schon sein soll.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!