Bilderarray als animation ablaufen lassen??

Nils0106

Neues Mitglied
Hallo 🙂

und zwar habe ich folgendes Problem, ich habe mit SWING eine GUI erstellt und möchte nun ein Video abspielen lassen bzw. eine Bilderfolge. Mit der JMF habe ich es nicht geschafft einen Player zu erstellen und da ich gelesen haben, dass das schon super veraltet ist hab ich dann ganz aufgegeben 😉

Nun hab ich aus dem VIdeo 120 Bilder (insgesamt 13MB) gemacht und dachte ich kann die ganz einfach als Array ablaufen lassen... leider geht das nicht... kann mir da evtl. jem helfen? 🙂

MfG

Quelltext:

Java:
public void videoworld() throws InterruptedException{ //Befüllung von Bildarray
        for(int i=0; i<10; i++){
            vid[i]= new ImageIcon("/home/administrator/NetBeansProjects/VBild"+i+".jpg");
        }
        Videoab();
    }
    
private void Videoab() throws InterruptedException{ //Aufruf zum anzeigen
        for(int i= 0; i<10; i++){
            SoundscapeVorschau.setIcon(vid[i]);
            Thread.sleep(10);
            continue;
        }
    }
 
Zuletzt bearbeitet von einem Moderator:
1. Fetter roter Hinweis: JAVA-Tags
2. Was ist SoundscapeVorschau? Da dürfte das Problem wohl eher zu suchen sein.
3. Wenn du zwischen dem umschalten nur 10 ms wartest, dauert der ganze Film nur 1.2s, wenn es blöd läuft, ist deine ganze Animation schon abgelaufen, bevor die GUI fertig geladen hat. Und bei nur 10 Bilder währe die Schleife nach 0.1s fertig, deine Animation ist mit so einer Geschwindigkeit vermutlich nicht wahrnehmbar.
Ein normaler Film hat afaik 24 Bilder pro Sekunde, das entspricht 42 ms Wartezeit zwischen dem Umschalten.
4. Der RepaintManager kann zeitlich nah beieinander liegende Repaints zu einem zusammen werfen, es ist also gut möglich, das einzelne Bilder übersprungen werden.
5. Es steht auch nicht da, wie das ganze aufgerufen wird. Insbesondere wird nicht deutlich, ob das ganze nicht auf dem EDT ausgeführt wird (z.B. weil in einem ActionListener gestartet). Dann könnte die GUI während dieser Zeit natürlich nicht aktualisieren.
 
Auf keinen Fall die paint()-Methode überschreiben! In Swing wird in solchen Fällen immer die paintComponent()-Methode überschrieben.

Außerdem würde ich die Bilder mit [JAPI]ImageIO[/JAPI] einlesen.
 
Hallo 🙂

also SoundscapeVorschau ist ein JLabel auf dem JFrame!

DIe Umschaltzeit hab ich jetzt mal auf 50 hochgesetzt, die würde ich noch anpassen.

Wie sollte ich jetzt am besten vorgehen? weil er zeigt nur das letzte Bild von dem Array an! -.-

MfG

Nils

PS: Das ist mein erster Beitrag hier in dem Forum, sorry wenn ich dann noch nicht mit allem hier klar komme^^
 
Vielleicht mal in einer Endlos-Schleife laufen lassen, sodass du sicher sein kannst das die Animation nicht vorbei ist bevor die GUI überhaupt geladen ist? Und wenn ich mich richtig erinnere hatte ich bei so etwas Probleme, weil die GUI ständig blockiert hat.
 
Du solltest außerhalb des EDT deine Bilderfolge auf das Label zeichnen. Der EDT wird solange blockiert, bis die Schleife durchlaufen ist, erst danach wird das Label aktualisiert. Deshalb siehst du nur das letzte Bild.
 

Zurück
Oben