Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-05-2004, 20:14   #1 (permalink)
***********
 
Registriert seit: Jul 2002
Beiträge: 32
Ladekontrolle für mehrere dynamisch geladene jpegs?

Hallo,

ich lade 3 Jpegs per loadMovie in 3 MCs. Diese MCs werden dann per AS ein- und ausgeblendet.

Wie genau kriege ich dieses "dann" hin? Ich will, dass der Film erst weiterläuft, wenn alle 3 Bilder vollständig geladen sind.

Jemand ne Idee? (Am besten mit AS-Code, da ich noch ziemlich mies im AS programmieren bin ...)

Danke schonmal.
tonymeman ist offline   Mit Zitat antworten
Alt 13-05-2004, 20:16   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Schon mit suchen und finden loader oder bilder loader oder ähnlichem versucht!!

Loader gibts hier zum Säue Füttern
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 13-05-2004, 20:36   #3 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Naja, speziell für mehrere Bilder nicht. Ich hab mal einen Thread gestartet, ahb aber keine Lösungen bekommen. Habz zwar bisher noch net gebraucht, aber deswegen auch noch nicht geschrieben
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 13-05-2004, 20:45   #4 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Mehrere Bilder,. Sounds oder Movieclips, wo zum Henker ist der unterschied!!
Und da hab ich schon selber einige reingestellt!!
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 13-05-2004, 20:51   #5 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Hier der ist aus einem Thread von mir, allerdings hat der "Majo" diese Variante geschrieben!!

ActionScript:
  1. stop();
  2. anzahl = 3;
  3. for (i=1; i<=anzahl; i++) {
  4.         _root.createEmptyMovieClip("con"+i, i+20);
  5.         _root["con"+i].loadMovie("http://mario-rudolph.de/bilder/bild"+i+".swf");
  6.         _root.createTextField("txt"+i, i, 420, 24*i, 130, 20);
  7.         _root.balken.duplicateMovieClip("bal"+i, i+100);
  8.         _root["bal"+i]._x = 420;
  9.         _root["bal"+i]._y = 24*i;
  10.         _root["bal"+i]._xscale = 0;
  11. };
  12. this.loader_funk = function() {
  13.         for (i=1; i<=anzahl; i++) {
  14.                 t = _root["con"+i].getBytesTotal();
  15.                 l = _root["con"+i].getBytesLoaded();
  16.                 if (l>=4) {
  17.                         pt = Math.ceil((l/t)*100);
  18.                         _root["bal"+i]._xscale = pt;
  19.                         _root["txt"+i].text = pt+" % von Mc"+i+" geladen";
  20.                         if (pt >= 100) {
  21.                                 _root["bal"+i].removeMovieClip();
  22.                                 _root["txt"+i].removeTextField();
  23.                                 clearInterval(loadID);
  24.                         }
  25.                 }
  26.         }
  27. };
  28. loadID = setInterval(loader_funk, 10);
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 13-05-2004, 20:53   #6 (permalink)
***********
 
Registriert seit: Jul 2002
Beiträge: 32
Wenn du schon selber welche reingestellt hast, könntest du mir bestimmt auch mal einen Link auf den Thread geben?

Ich hab nämlich schon lange gesucht und immer nur die für ein Bild gefunden. Die haben aber in meinem Fall nicht funktioniert.

Und so viel Code kann das doch eigentlich nicht sein. Wie gesagt müsste ja nur überprüft werden, ob alle 3 Bilder geladen sind und wenn ja den Film weiterlaufen lassen.

EDIT: Tja, da haben wir wohl fast gleichzeitig gepostet. Danke schonmal, ich probiers dann mal aus!

Geändert von tonymeman (13-05-2004 um 20:55 Uhr)
tonymeman ist offline   Mit Zitat antworten
Alt 14-05-2004, 18:53   #7 (permalink)
***********
 
Registriert seit: Jul 2002
Beiträge: 32
Tach RustyCake,

hab das Script gerade ausprobiert, es funktioniert nicht.

Ich denke es liegt daran, dass clearInterval(loadID); innerhalb der for-Schleife steht. Damit wird nach dem ersten geladenen Bild die Ladekontrolle beendet. Aber genau das soll ja erst passieren, wenn alle Bilder geladen sind.

Ein weiteres Problem ist, dass für jedes Bild eine extra Ladeanzeige erstellt wird. Auch wird jedes Bild sofort dargestellt, nachdem es geladen ist.

Könnte man das nicht irgendwie umbauen, um eine Ladekontrolle für alle Bilder gemeinsam zu erhalten und dass die Bilder erst angezeigt werden, wenn alle geladen sind?

Geändert von tonymeman (14-05-2004 um 18:59 Uhr)
tonymeman ist offline   Mit Zitat antworten
Alt 14-05-2004, 19:17   #8 (permalink)
Neuer User
 
Registriert seit: Dec 2001
Ort: D
Beiträge: 381
Hi ,

ich hatte das Problem auch schon mal.
Ich poste Dir jetzt mal ein bisschen Code, habe allerdings
grad keine Zeit es zu erklären, hoffe Du kannst es umbauen,
oder Dir selber eine Lösung damit erarbeiten.
In dem Script geht es darum, dass eine dyn. Anzahl von Bilder
und ein Content-swf geladen wird.

Das ist leider aus einem relativ Komplexen Zusammenhang gerissen, aber vielleicht hilft's
Dir ja.

Es geht sicherlich smarter:

Das ist ein onEnterFrame:
ActionScript:
  1. CL.Preload1stTime = function() {
  2.     var cP = ContenPath;
  3.    
  4.     var pctHolder_str = cP.contentButton.button.bild.pctHolder;
  5.    
  6.     var pctTotal = 0;
  7.     var pctLoaded = 0;
  8.        
  9.         for(i in this.picts) {
  10.         trace("bild "+ i+" :: "+this.picts[i].Path + " | Bytes ::" + cP.contentButton.button.bild.pctHolder["seg"+this.uid]["pct"+i].getBytesTotal());
  11.         var PictsTotal = pctHolder_str.getTotalBytes_Pict(this.uid , i);
  12.        
  13.         if (PictsTotal != undefined && PictsTotal != -1) {
  14.             this.picts[i].loading = true;
  15.             trace("Picts" + i + " loading :: " + this.picts[j].loading + " SIZE: " + PictsTotal);
  16.         }
  17.        
  18.         pctTotal  += pctHolder_str.getTotalBytes_Pict(this.uid , i);
  19.         pctLoaded += pctHolder_str.getLoadedBytes_Pict(this.uid , i);
  20.     }
  21.    
  22.     trace("__________________________________________________________");
  23.    
  24.     var Btotal  = cP.content.content.getBytesTotal() + pctTotal;
  25.     var Bloaded = cP.content.content.getBytesLoaded() + pctLoaded;
  26.    
  27.     trace("CONTENT Total: "+cP.content.content.getBytesTotal());
  28.  
  29.     if(!isNaN(Bloaded/Btotal)) {
  30.         this.label_txt.text = parseInt(Bloaded/1024) + "KB / " + parseInt(Btotal/1024) + "KB";
  31.        
  32.         this.bar_mc._width = 186 * (Bloaded / Btotal);
  33.        
  34.     } else {
  35.         this.label_txt.text = "";
  36.         this.bar_mc._width = 0;
  37.     }
  38.        
  39.     if ( Bloaded == Btotal && Bloaded > 0) {
  40.         if (!this.avoid) {
  41.  
  42.                
  43.             }
  44.         }
  45.        
  46.         for(l in this.picts) {
  47.             if (this.picts[l].loading == "undefined" ||
  48.                 pctHolder_str.getTotalBytes_Pict(this.uid , l) !=  pctHolder_str.getLoadedBytes_Pict(this.uid , l) ||
  49.                 pctHolder_str.getTotalBytes_Pict(this.uid , l) == undefined ||
  50.                 isNaN( pctHolder_str.getTotalBytes_Pict (this.uid , l) / pctHolder_str.getLoadedBytes_Pict (this.uid , l) ) ||
  51.                 pctHolder_str.getTotalBytes_Pict(this.uid , l) == -1) {
  52.                
  53.                     var FilesLoaded = true;
  54.             }
  55.         }
  56.        
  57.         if (cP.content.content.getBytesTotal() ==  undefined || cP.content.content.getBytesTotal() ==  -1 ||
  58.             cP.content.content.getBytesTotal() <= 0 ||                                      
  59.             cP.content.content.getBytesTotal() != cP.content.content.getBytesLoaded() ) {
  60.  
  61.                 var FilesLoaded = true;
  62.         }
  63.        
  64.         if (!FilesLoaded) {
  65.        
  66.             this.bar_mc._width = 186;
  67.             trace("PICTS LOADED BYTES :: " + pctTotal);
  68.             trace("TOTAL LOADED BYTES :: " + Btotal);
  69.             removeMovieClip(this);
  70.             cP.fadeIn();
  71.         } else {
  72.             delete FilesLoaded; 
  73.         }
  74.     }
  75. };

Das sind die Funktionen, die da oben auch aufgerufen werden:


ActionScript:
  1. PH.getTotalBytes_Pict = function (segmentID, pctID) {
  2.     var total = this["seg"+segmentID]["pct"+pctID].pct.getBytesTotal();
  3.     trace("SegmentID :: "+segmentID + " | pctID:"+ pctID+" | total: "+total);
  4.     return total;
  5. };
  6.  
  7. PH.getLoadedBytes_Pict = function (segmentID, pctID) {
  8.     var total = this["seg"+segmentID]["pct"+pctID].pct.getBytesLoaded();
  9.     trace("SegmentID :: "+segmentID + " | pctID:"+ pctID+" | loaded: "+total);
  10.     return total;
  11. };
momo-loom ist offline   Mit Zitat antworten
Alt 14-05-2004, 19:19   #9 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Es wäre vielleicht besser sich da eine Funktion zu schreiben, die jeweils einen Container mit Preloader und allem, was dazugehört, erstellt.

@Rusty:
Dein Script ist mir jetzt wieder zu un-dymnamisch
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 14-05-2004, 19:22   #10 (permalink)
{flasher}
 
Benutzerbild von Majo
 
Registriert seit: Mar 2003
Ort: on water
Beiträge: 2.823
hi tonymeman....das script funzt schon, sonst würde es nicht hier stehen...und der loader hört nicht nach dem ersten bild auf....schätzungsweise fliegen hier im forum noch 1000000000000000 externe loader rum


hi rusty"theLoaderFreak"cake
__________________
hang loose
Majo ist offline   Mit Zitat antworten
Alt 15-05-2004, 00:24   #11 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Zitat:
Geschrieben von johanness
@Rusty:
Es wäre vielleicht besser sich da eine Funktion zu schreiben, die jeweils einen Container mit Preloader und allem, was dazugehört, erstellt!
Dein Script ist mir jetzt wieder zu un-dymnamisch
Ob Dein vorschlag so dynamisch ist Naja!!
Des was ich gepostet hb ist ja von Majo

@ tonymeman

Hab des script selbst getestet, des funzt!! Sonst würde ich des net Posten !
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"

Geändert von RustyCake (15-05-2004 um 00:26 Uhr)
RustyCake ist offline   Mit Zitat antworten
Alt 15-05-2004, 08:52   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
hi,

wenn du die Bilder hintereinander laden möchtest,
dann test doch mal das :

ActionScript:
  1. var anzahl = 4;
  2. var i = 1;
  3. function weiter () {
  4.     trace(i)
  5.     if (i < anzahl) {
  6.         //**************************************************
  7.         createEmptyMovieClip ("bildcont" + i, i);
  8.         this["bildcont" + i].loadMovie ("bild_" + i + ".jpg");
  9.         //this["bildcont" + i]._x = i*200
  10.         //**************************************************
  11.         createEmptyMovieClip ("oef1000" + i, 100);
  12.         this["oef1000" + i].onEnterFrame = function () {
  13.             total = eval ("bildcont" + i).getBytesTotal ();
  14.             geladen = eval ("bildcont" + i).getBytesLoaded ();
  15.             prozent = Math.round ((geladen / total) * 100);
  16.             if (geladen >= total && geladen > 10) {
  17.                 delete this["oef1000" + i].onEnterFrame;
  18.                 i++;
  19.                 weiter ();
  20.             }
  21.         };
  22.     }
  23. }
  24. weiter();
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 15-05-2004, 15:35   #13 (permalink)
***********
 
Registriert seit: Jul 2002
Beiträge: 32
Lightbulb

Tach Rusty, Tach Majo, natürlich funktioniert euer Skript, es ist aber nicht das, was ich gesucht habe, da bei eurem Skript für jedes einzelne Bild ein Ladestatus angezeigt wird.

Ich hab das ganze jetzt mal etwas umgeschrieben, so dass es eine Gesamt-Ladestatusanzeige über alle Bilder gibt und der Film auch erst dann weiterspielt, wenn alle Bilder geladen sind.

Wäre cool wenn mir jemand noch einen kleinen, in Größe und Farbe veränderbaren Ladebalken einbauen könnte.

ActionScript:
  1. stop();
  2. anzahl = 3;
  3. for (i=1; i<=anzahl; i++) {
  4.     _root.createEmptyMovieClip("img"+i, i+20);
  5.     _root["img"+i].loadMovie("bild"+i+".jpg");
  6.     _root["img"+i]._alpha = 0;
  7. }
  8.  
  9. _root.createTextField("txt", 50, 10, 30, 130, 20);
  10.  
  11. this.loader_funk = function() {
  12.     t = 0;
  13.     l = 0;
  14.     for (i=1; i<=anzahl; i++) {
  15.         t += _root["img"+i].getBytesTotal();
  16.         l += _root["img"+i].getBytesLoaded();
  17.     }
  18.     if (l>=4) {
  19.         pt = Math.ceil((l/t)*100);
  20.         _root.txt.text = pt+" % geladen";
  21.         if (pt >= 100) {
  22.             _root.txt.removeTextField();
  23.             clearInterval(loadID);
  24.             for (i=1; i<=anzahl; i++) {
  25.                 _root["img"+i]._alpha = 100;
  26.             }
  27.             _root.play();
  28.         }
  29.     }
  30. };
  31. loadID = setInterval(loader_funk, 10);
tonymeman ist offline   Mit Zitat antworten
Alt 15-05-2004, 17:51   #14 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Müßte dann eigentlich gehen!
ActionScript:
  1. pt = Math.ceil((l/t)*100);
  2. _root.balken_mc._xscale = pt;
  3. _root.txt.text = pt+" % geladen";
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 15-05-2004, 23:13   #15 (permalink)
{flasher}
 
Benutzerbild von Majo
 
Registriert seit: Mar 2003
Ort: on water
Beiträge: 2.823
oder wenn du zu faul bist einen balken_mc zu erstellen, dann lass es AS machen...
ActionScript:
  1. var startx = 300;
  2. // x-anfansgskoordinaten des balkens
  3. var starty = 200;
  4. // y-anfangskoordinaten des balkens
  5. var breite = 200;
  6. // hier die breite des balkens einstellen
  7. var hoehe = 2;
  8. // hier die hoehe des balkens einsellen
  9. var farbe = 0xff00ff;
  10. // hier die farbe des balkens einstellen
  11. var alpha = 100;
  12. // hier den alphawert (durchsichtigkeit) des balkens einstellen
  13.  
  14. // zeichnen des balkens
  15. _root.createEmptyMovieClip("balken_mc", 1);
  16. // erstellt ein mc
  17. balken_mc._x = startx;
  18. balken_mc._y = starty;
  19. with (balken_mc) {
  20.     beginFill(farbe, alpha);
  21.     lineTo(0, hoehe);
  22.     lineTo(breite, hoehe);
  23.     lineTo(breite, 0);
  24.     lineTo(0, 0);
  25.     endFill();
  26. };
  27. anzahl = 3;
  28. for (i=1; i<=anzahl; i++) {
  29.         _root.createEmptyMovieClip("img"+i, i+20);
  30.         _root["img"+i].loadMovie("bild"+i+".jpg");
  31.         _root["img"+i]._alpha = 0;
  32. }
  33.  
  34. _root.createTextField("txt", 50, 10, 30, 130, 20);
  35.  
  36. this.loader_funk = function() {
  37.         t = 0;
  38.         l = 0;
  39.         for (i=1; i<=anzahl; i++) {
  40.                 t += _root["img"+i].getBytesTotal();
  41.                 l += _root["img"+i].getBytesLoaded();
  42.         }
  43.         if (l>=4) {
  44.                 pt = Math.ceil((l/t)*100);
  45.                 _root.txt.text = pt+" % geladen";
  46.                 _root.balken_mc._xscale = pt;
  47.                 if (pt >= 100) {
  48.                         _root.txt.removeTextField();
  49.                         _root.balken_mc.removeMovieClip();
  50.                         clearInterval(loadID);
  51.                         for (i=1; i<=anzahl; i++) {
  52.                                 _root["img"+i]._alpha = 100;
  53.                         }
  54.                         _root.play();
  55.                 }
  56.         }
  57. };
  58. loadID = setInterval(loader_funk, 10);

@rusty...das wir uns immer in den loader-threads treffen ?!?
__________________
hang loose
Majo 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 19:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele