| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2005
Beiträge: 32
| Loader für dynamisch geladene Bilder
Hallo, ich habe folgendes Problem: ich habe einen Skript, das Bilder aus einem Verzeichnis in einem MC nacheinander lädt. Ich möchte aber, dass die Bilder angezeigt werden erst wenn ein Teil davon "geladen" ist. Im Moment sieht mein Skript so aus: var mc = this.createEmptyMovieClip('base', 100); mc._x = 0; mc._y = 0; var elem = 1; var max = 2000; var delay = 500; function loadPics(){ mein_mcl.loadClip("http://www.test/test/"+elem+".jpg", mc); elem++; if(elem > max) clearInterval(intval), delete intval; } intval = setInterval(loadPics, delay); mein_mcl ist ein Objekt der Klasse "MovieClipLoader()". ich habe auch einen Listener eingebaut, das mir über den Lagevorgang der einzelnen geladenen Clips informiert. SO: meinListener.onLoadProgress = function(ziel_mc, loadedBytes, totalBytes) { trace("onLoadProgress() Callback in Movieclip "+ziel_mc); trace(loadedBytes+" = Geladene Byte bei Verlauf Callback "); trace(totalBytes+" = Byte gesamt bei Verlauf Callback \n"); percentLoaded = int (100*(loadedBytes/totalBytes)); trace(percentLoaded+"% loaded"); }; Das Problem ist das die Bilder nacheinander geladen und angezeigt werden und ich möchte einen Skript, der zuerst die Bilder lädt und dann sie nacheinander zeigt. Ist das möglich? Kann mir jemand helfen? |
| | |
| | #2 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Hallo! Habe mir jetzt das script nicht komplett angetan. Aber um zu überprüfen, ob alle Bilder geladen sind, kannst du ja eine Variable hochzählen lassen. Also immer z.B. _root.geladen +=1. Dann noch das entsprechende Bild _visible = false; setzen. Wenn die Anzahl der geladenen der zuladenden entspricht, einfach nacheinander sichtbar machen. Verstanden
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Mar 2005
Beiträge: 32
|
Danke. Was ich jetzt gemacht habe: ich habe 2 Funktionen geschrieben: Die erste lädt die Bilder in den unsichtbaren MC. Wenn die Bilder geladen worden sind werden sie nochmal geladen (und angezeigt) in den nicht mehr unsichtbaren MC. Und ein zweiter Zähler sorgt dafür, dass alle Bilder (vom 1.jpg) angezeigt werden. Aber etwas stimmt in meinem Code nicht. Eigentlich geht es gar nicht |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Mar 2005
Beiträge: 32
|
Ich bin jetzt mit meinem Sktipt zufrieden... oder fast. Wenn ich bei mir lokal teste, dann funktioniert alles super, das heißt, die Bilder werden erstmal alle geladen und dann nacher angezeigt. Aber wenn ich versuche, die Bilder aus dem Internet zu laden (wie es sein muss), dann bricht der Ladeprozess immer ab. In der Ausgabe kommt immer die Meldung "Ladevorgang in Movieclip fehlgeschlagen" und ich habe das Gefühl, dass Flash sich nicht genug Zeit nimmt, ein Bild fertig zu laden... Kann man was dagegen machen??? |
| | |
| | #5 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
...habe ich ja noch nie gehört? Flash nimmt sich also keine Zeit? So, so ! Zeig' doch mal dein Script. Wir können hier nicht hellsehen.
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Mar 2005
Beiträge: 32
|
Das ist sehr nett! Hier mein Code: // erste Gruppe Listener _level0.geladen =0; var mein_mcl = new MovieClipLoader(); meinListener = new Object(); meinListener.onLoadProgress = function(ziel_mc, loadedBytes, totalBytes) { percentLoaded = int(100*(loadedBytes/totalBytes)); trace(percentLoaded+"% loaded"); _level0.progress_txt.text = _level0.geladen; }; meinListener.onLoadComplete = function(ziel_mc) { trace("Ladevorgang in Movieclip erfolgt = "+ziel_mc); var loadProgress = mein_mcl.getProgress(ziel_mc); trace(loadProgress.bytesLoaded+" = Am Ende geladene Byte"); trace(loadProgress.bytesTotal+" = Byte gesamt am Ende"); _level0.geladen +=1; if(_level0.geladen == max){ trace("ende"); intval = setInterval(load2, delay); } }; meinListener.onLoadInit = function(ziel_mc) { meinTrace("*********Erste mein_mcl-Instanz*********"); trace("Movieclip = "+ziel_mc+" ist jetzt initialisiert"); ziel_mc._width = 600; ziel_mc._height = 400; // Jetzt eine beliebige Einrichtung vornehmen, zum Beispiel: }; meinListener.onLoadError = function(ziel_mc, errorCode) { trace("*********Erste mein_mcl-Instanz*********"); trace("FEHLERCODE = "+errorcode); trace("Ladevorgang in Movieclip fehlgeschlagen = "+ziel_mc+"\n"); trace(_level0.geladen) }; mein_mcl.addListener(meinListener); var mc = this.createEmptyMovieClip('grund', 100); mc._x = 0; mc._y = 0; max=9; var i = 1; var delay = 1000;// hier die verzögerung in millisekunden function loadPics() { grund._alpha = 0; for(elem=1;elem<max+1;elem++) { mein_mcl.loadClip("http://www.gambaccini.de/tEst/"+elem+".jpg", mc); mein_mcl.unloadClip("http://www.gambaccini.de/tEst/"+elem+".jpg", mc); } } function load2() { grund._alpha = 100; mein_mcl.loadClip("http://www.gambaccini.de/tEst/"+i+".jpg", mc); mein_mcl.unloadClip("http://www.gambaccini.de/tEst/"+i+".jpg", mc); i++; if (i>max) { i=1; } } loadPics(); // |
| | |
| | #7 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Guck mal, ob das so passt. Bisschen verwirrend, aber du hast damit angefangen ActionScript:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Mar 2005
Beiträge: 32
|
WOW, das ist richtig cool! Also die erste Funktion erstellt die MCs und lädt die Bilder darein. Die zweite macht die MCs sichtbar und unsichtbar. Das ist perfekt. Erstmal vielen Dank. Das einzige Problem, das ich noch habe ist das die Bilder teilweise nicht 100% geladen werden(daher sehen sie manchmal kaputt aus... ) und trotzem wird der Zähler beim "onLoadComplete" erhöht. Aber das sollte nur passieren nur wenn das vorigen Bild 100%ig geladen worden ist, dachte ich). Ansosten wofür ist das Event OnLoadComplete da? Ich habe jetzt dort eingefügt if(percentLoaded==100) { _level0.geladen += 1; } Das Ergebnis ist das kein Bild mehr angezeigt wird, da einige Bilder nicht 100% geladen werden und daher wird die zweite Funktion gar nicht aufgerufen weil "_level0.geladen" nie die richtige Stufe erreicht... Es wäre toll, wenn Du Dir das noch anschauen könntest |
| | |
| | #9 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Hallo! Ich selber habe mit der MovieClipLoader-Klasse noch nicht gearbeitet. Kann nur sagen, dass das eigentlich alles so passen sollte (und bei mir auch funzt). Keine Ahnung, ob die Klasse vielleicht noch irgendwo Bugs hat...!?!
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |