Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-05-2005, 16:12   #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?
patatrak ist offline   Mit Zitat antworten
Alt 15-05-2005, 17:00   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
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! +++
Der Frager ist offline   Mit Zitat antworten
Alt 15-05-2005, 18:00   #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
patatrak ist offline   Mit Zitat antworten
Alt 16-05-2005, 16:02   #4 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 32
Exclamation Ladevorgang in Movieclip fehlgeschlagen HILFE!!!

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???
patatrak ist offline   Mit Zitat antworten
Alt 16-05-2005, 16:13   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
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! +++
Der Frager ist offline   Mit Zitat antworten
Alt 16-05-2005, 17:08   #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();

//
patatrak ist offline   Mit Zitat antworten
Alt 16-05-2005, 17:33   #7 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Guck mal, ob das so passt. Bisschen verwirrend, aber du hast damit angefangen
ActionScript:
  1. // erste Gruppe Listener
  2. _level0.geladen = 0;
  3. var mein_mcl = new MovieClipLoader();
  4. meinListener = new Object();
  5. meinListener.onLoadProgress = function(ziel_mc, loadedBytes, totalBytes) {
  6.     percentLoaded = int(100*(loadedBytes/totalBytes));
  7.     trace(percentLoaded+"% loaded");
  8.     _level0.progress_txt.text = _level0.geladen;
  9. };
  10. meinListener.onLoadComplete = function(ziel_mc) {
  11.     trace("Ladevorgang in Movieclip erfolgt = "+ziel_mc);
  12.     var loadProgress = mein_mcl.getProgress(ziel_mc);
  13.     trace(loadProgress.bytesLoaded+" = Am Ende geladene Byte");
  14.     trace(loadProgress.bytesTotal+" = Byte gesamt am Ende");
  15.     _level0.geladen += 1;
  16.     if (_level0.geladen == max) {
  17.         trace("ende");
  18.         intval = setInterval(load2, 2000);
  19.     }
  20. };
  21. meinListener.onLoadInit = function(ziel_mc) {
  22.     meinTrace("*********Erste mein_mcl-Instanz*********");
  23.     trace("Movieclip = "+ziel_mc+" ist jetzt initialisiert");
  24.     ziel_mc._width = 600;
  25.     ziel_mc._height = 400;
  26.     // Jetzt eine beliebige Einrichtung vornehmen, zum Beispiel:
  27. };
  28. meinListener.onLoadError = function(ziel_mc, errorCode) {
  29.     trace("*********Erste mein_mcl-Instanz*********");
  30.     trace("FEHLERCODE = "+errorcode);
  31.     trace("Ladevorgang in Movieclip fehlgeschlagen = "+ziel_mc+"\n");
  32.     trace(_level0.geladen);
  33. };
  34. mein_mcl.addListener(meinListener);
  35. mc._x = 0;
  36. mc._y = 0;
  37. max = 9;
  38. var i = 0;
  39. var delay = 1000;
  40. // hier die verzögerung in millisekunden
  41. function loadPics() {
  42.     for (elem=1; elem<max+1; elem++) {
  43.         var mc = this.createEmptyMovieClip('grund'+elem, 100+elem);
  44.         mc._alpha = 0;
  45.         mein_mcl.loadClip("http://www.gambaccini.de/tEst/"+elem+".jpg", mc);
  46.         //mein_mcl.unloadClip("http://www.gambaccini.de/tEst/"+elem+".jpg", mc);
  47.     }
  48. }
  49. function load2() {
  50.     if (i==0) {
  51.         _root["grund"+max]._alpha = 0;
  52.     }
  53.     i++;
  54.     trace (i)
  55.     _root["grund"+i]._alpha = 100;
  56.     _root["grund"+(i-1)]._alpha = 0;
  57.     if (i==max) {
  58.         i = 0;
  59.     }
  60. }
  61. loadPics();
  62. //
  63.  
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 16-05-2005, 18:40   #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
patatrak ist offline   Mit Zitat antworten
Alt 17-05-2005, 11:57   #9 (permalink)
................
 
Benutzerbild von Der Frager
 
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! +++
Der Frager ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele