2012-04-11 9 views
1

Mein Programm benötigt einige Sekunden zum Starten. Ich benutze Unordnung für die GUI, und ich entschied mich zu versuchen, etwas Pop zu machen, um anzuzeigen, dass das Programm gestartet wird. Ich wollte einfach nur ein Logo öffnen und drehen und dann verschwinden, wenn das Programm startet.Wie man ein Lade-/Intro-Animations-Popup erstellt, während man auf das Starten des Programms wartet. Clutter/GTK +

Also in Unordnung, ich dachte, ich könnte nur eine neue Bühne (Fenster) einen Schauspieler hinzufügen, machen Sie die und Schauspieler drehen, im ersten Abschnitt der Hauptfunktion. Das Fenster wird sofort angezeigt, aber ohne Inhalt, aber der Inhalt wird nicht angezeigt, bis Sie die Clutter-Hauptschleife starten.

Also habe ich mich nur gefragt, wie ich das mit Clutter oder GTK + erreichen könnte.

Wenn Sie mit Reaper 4, dem Audio-Aufnahme-Programm, vertraut sind, macht dieses Programm etwas, was ich tun soll.

Antwort

2

Was Sie wollen, wird ein Begrüßungsbildschirm genannt. Ich bin mit Unordnung nicht vertraut, aber ich fand dieses GTK splash screen example.

Allerdings denke ich, du nimmst das Problem in die falsche Richtung. Splash-Screens sind eine schlechte Idee, weil Sie einfach Overhead hinzufügen. Was Sie brauchen, ist Ihre Startleistung zu verbessern, indem Sie ein paar CPU- und/oder IO-Profiling durchführen. Laden Sachen auf Abruf, und nicht alle auf einmal helfen.

+0

Splash Screens sind keine schlechte Idee. Wenn Sie eine schwere Anwendung haben, die viele Lade- und Initialisierungsvorgänge durchführen muss, bevor etwas getan werden kann, ist es gut zu zeigen, dass der Computer beschäftigt ist. Das Ergebnis kann sein, dass der Benutzer die Anwendung zweimal bootet, weil das Laden zu lange dauert, was dann falsch ist, wenn überhaupt nicht geladen wird. – TimZaman

+0

Ich stimme nicht zu. Sie sollten sich stattdessen bemühen, Ihre Benutzeroberfläche so schnell wie möglich zu zeigen und etwas Schweres entweder im Hintergrund oder bei Bedarf zu laden. – liberforce

+0

Sie können nicht widersprechen. Splash Screens sind eine gute Idee für schwere Anwendungen. Wenn Sie Windows hochfahren, möchten Sie 20 Sekunden lang auf einen leeren Bildschirm schauen oder eine Animation, die Ihnen zeigt, dass sie geladen wird und daher 20.1 Sekunden dauert? Adobe-Pakete, die gleiche Sache, sie alle haben Splash-Screens. Sonst wüsstest du nicht, dass es geladen oder funktioniert, und du wirst es zweimal drücken. – TimZaman

1

Leider bin ich mit Clutter nicht vertraut. Aber ich bin mir ziemlich sicher, dass es schwierig sein wird, eine Animation zu rendern, ohne dass eine Hauptschleife in einer High-Level-Bibliothek läuft. Ich würde versuchen, den Code, der die Verzögerung verursacht, in einen separaten Thread einzufügen und die Hauptschleife zu informieren, wenn der Startvorgang abgeschlossen ist.

+0

ist ich nur ein eigenes Programm einen neuen Ansatz bin versucht zu machen starten beim Start . Aber ich kann den besten Weg nicht finden, das Intro-Programm zu schließen, wenn das Hauptprogramm startet. – MVTC

+0

Für welche Plattform entwickeln Sie? Oder soll Ihr Programm plattformunabhängig sein? – rand0m

+0

Es soll plattformübergreifend sein. Momentan entwickle ich es unter Linux. – MVTC

0

So etwas ist, was ich verwenden:

string splashfile = path_templ + "/splashimg.png"; 

GtkWidget *image=gtk_image_new_from_file(splashfile.c_str()); 
gtk_container_add(GTK_CONTAINER(SplashWindow), image); 


gtk_widget_show_all(SplashWindow); 

//Cycle through all iterations (refresh everything in the GUI) 
while (gtk_events_pending()){ 
    gtk_main_iteration(); 
} 
sleep(1); 

(... rest of code ...) 

gtk_main(); 
gdk_threads_leave(); 

Gerade dieser letzte Teil der während Ereignisse anhängig der Schlüssel