PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Canvas + Animation



bischi
02-05-2003, 13:17
Ich habe einen Canvas geschrieben der eine Animation anzeigen kann. Wenn ich diese Animation im Konstruktor meiner JFrame-Klasse starte, gibt es keine Probleme. Wenn ich aber einen ActionListener definiere und aus diesem heraus die Animation versuche zu starten, geht sozusagen nichts mehr (nur noch das letzte Bild wird angezeigt). Hat jemand ne Ahnung, woran das liegt und wie das zu ändern wäre?

MfG Bischi
(Ich weiss, mein Canvas fängt langsam an zu nerven, doch mich nervt er noch mehr!)

SeeksTheMoon
02-05-2003, 14:40
poste mal was Quellcode

bischi
02-05-2003, 16:17
Ich glaube, du willst den Quellcode nicht sehen (:D 2/3 sind Auskommentierte Befehle). Ich werde ihn ein bisschen vereinfachen (=sehr viel löschen) und ihn dann anschliessend hier posten. Ich kann aber mal sagen, wie das gesamte grundsätzlich aufgebaut ist:

----------------------------------------------------------------------
Klasse MeinCanvas: lädt Bilder, und zeichnet diese (repaint() --> update() --> paint())
Klasse Animation: übergibt der Klasse MeinCanvas die Pfade für die zu animierenden Bilder. Weiter übergibt sie an Canvas die Koordinaten, an der das Bild zu zeichnen ist
Klasse JFrameTest: Ist Fullscreen-Anwendung. Erstellt im Konstruktor einen MeinCanvas() und eine Animation(). Ruft in der Klasse Animation die Funktionen Setzte(übergibt Canvas + anfangs- + Endkoordinaten). Danach start2() (Diese startet die Animation).
-----------------------------------------------------------------------
Solange funktioniert alles bestens. Starte ich die Animation aber nicht im Konstruktor, sondern sonst in einer Methode (um auf einen Button-Click zu reagieren), so wird zwar schön Bild für Bild die repaint()-Methode aufgerufen, diese ruft dann aber nicht mehr die update()-Methode (beide von MeinCanvas) auf. Ist die Animation vorbei (lässt sich an Kommandozeile überprüfen) so wird in der Klasse MeinCanvas die paint()-Methode aufgerufen (aber nicht durch repaint() sondern einfach so (weiss nicht warum)). So ist im Canvas das letzte Bild der Animation zu sehen.

Ich rufe weder die update()- noch die paint()-Methode direkt auf, und auch die ganze Animation verläuft nicht in einem eigenen Thread.


Werde noch einige Testreihen durchführen (hab noch einige Ideen, die ich bis jetzt noch nicht versucht habe). Falls dann schlussendlich immer noch nichts funktioniert, so werde ich den bis dann hoffentlich übersichtlicheren Quellcode posten. Falls jemand aber vorher doch noch eine konkrete Idee hat, woran mein Problem liegt könnte, so wäre ich sehr dankbar.

MfG Bischi :confused:

bischi
02-05-2003, 16:19
PS: das Fettgedruckte ist ein bisschen zu lang: Ich werde natürlich den Canvas immer im Konstruktor erstellen!

peschmae
02-05-2003, 16:26
du kannst den beitrag hier auch noch nachträglich bearbeiten. Schliesslich sind wir hier nicht bei chip.de :D :D :p :o

MfG Peschmä

bischi
03-05-2003, 09:30
Ist mir bewusst (auf Chip hat es mich auch aufgeregt). Ging aber schneller, einen neuen Beitrag zu schreiben, als den anderen abzuändern:rolleyes: :cool: ;) :p :D

bischi
03-05-2003, 11:09
Hab ne Lösung für mein Problem gefunden: Es läuft, ähnelt aber der Holzhammer-Brechstangen-Methode:

while()-schleife im Konstruktor, die dann die entsprechenden Funktionen aufruft.

MfG Bischi