Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-01-2005, 22:13   #1 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
Preloading mehrerer dateien ;(

Moin!

ich ahtte gehofft, ich müsste dafür keinen tread eröffnen, ich ahbe die letzten 2 wochen das internet durchforstet, und auch alles, was ich hier über preloding finden konnte durchgelesen, alles mögliche probiert, alles von vorene angefangen etc. es wird nur leider nichts, darum bicn ich wol auf eure Hilfe angewiesen.

mein ziel ist es, das der flash-film aus einer xml datei dateinamen, clipnamen und tiefen, später eventuell nochmehr daten auslies, mit diesen daten soll ein prelaoder gesteuiert werden, der dann jeden film nacheinander für lädt.
im grunde soltle das doch kein problem sein oder?

habe ich zumindest gedacht, wie der film die xml daten ausliest ist denke ich uninteressant, da das alles einwandfrei läuft, ich bekomme ein mehrdimensionales array, mit den daten...

aber bei dem preloader habe ich meine probleme, ich möchte, dass wenn er mit der einen datei fertig ist, die nächste ädt, und dafür den selben balken, textfelder usw. benutzt...

hier ersteinmal das script:
ActionScript:
  1. ladestatus = function (datei, clip, tiefe) {
  2.     // leeren Clip erstellen
  3.     ladeziel = _root.createEmptyMovieClip(clip, tiefe);
  4.     // in den Clip den Film laden
  5.     ladeziel.loadMovie(datei, mia);
  6.     // onEnterFrame Event starten zum aktualisieren der Daten
  7.     loader.onEnterFrame = function() {
  8.         // geladene und zu ladene bytes auslesen
  9.         geladen = _root.ladeziel.getBytesLoaded();
  10.         zuladen = _root.ladeziel.getBytesTotal();
  11.         // Sicherheitsmechanismus wegen leeren MC's
  12.         if (geladen>=10) {
  13.             // werte umrechnen
  14.             prozent = Math.round(geladen/zuladen*100);
  15.             kbGeladen = Math.round(geladen/1024);
  16.             kbZuladen = Math.round(zuladen/1024);
  17.             // werte ausgeben
  18.             this.prozentanzeige.text = prozent+" Prozent geladen";
  19.             this.txtGeladen.text = kbGeladen+" KB geladen";
  20.             this.txtGesamt.text = kbZuladen+" KB Gesamt";
  21.             // Balken "strecken"
  22.             this.balken._xscale = prozent;
  23.             // wenn Geladen...
  24.             if (prozent>=100) {
  25.                     delete this.onEnterFrame;
  26.             }
  27.         }
  28.     };
  29. };

so, diese funktion wird so aufgerufen:
ActionScript:
  1. // Film laden:
  2. ladestatus("mia2.jpg", "mia", 31);

funktionioert auch alles einwandfrei, nur wie mache ich das jetzt weiter, wenn ich die nächste datei laden möchte?
auf einem button geht es ganz einfach:
ActionScript:
  1. lade_1.onRelease = function() {
  2.     ladestatus("bild3.jpg", "mia1", 32);
  3. };

hierbei gibt es keine einwände, er aktualisiert alle daten, zeigt den balken an, unad alles ist top,

so, setze ich die funktionen hintereinander werden beide filme geladen, aber die anzeige geht nicht ;(

ich möchte also, wenn die funktion durchgelaufen ist, diese den nächsten film laden lassen.
wenn ein film geladen wurde, gebe ich einer anderen funktion bescheid, die dann den nächsten film laden lässt, wie mache ich das?

ich haeb einiges mit if schleifen, und mit onenterframes verucht, alles ging nicht ;(

ich freue mich auf eure postings!
Merlin
__________________
dies ist der anfang vom rest deines lebens
merlinvs ist offline   Mit Zitat antworten
Alt 19-01-2005, 23:45   #2 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
ActionScript:
  1. if (prozent>=100) {
  2.         delete this.onEnterFrame;
  3. //hier ne abfrage, ob noch weitere geladen werden sollen,
  4. //wenn ja von hier aus die nächste "Ladung" aufrufen
  5. }
...und was soll der zweite Parameter in dem loadMovie?
ActionScript:
  1. ladeziel.loadMovie(datei, mia);
der muss raus!
ActionScript:
  1. ladeziel.loadMovie(datei);
es gibt nur nen zweiten parameter, wenn man diese Syntax verwenden würde:
ActionScript:
  1. loadMovie(datei,ladeziel);
wenn's net geht, dann poste mal die fla!

grz

Geändert von pape (19-01-2005 um 23:48 Uhr)
pape ist offline   Mit Zitat antworten
Alt 20-01-2005, 13:16   #3 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
huch, die zwei parameter kommen noch von dem ganzen herumprobieren

ja, so habe ich mir das mit der abfrage auch schon einmal gedacht, kannst du mir vielleicht einen größeren ansatz geben?

danke für die antwort! Merlin
__________________
dies ist der anfang vom rest deines lebens

Geändert von merlinvs (20-01-2005 um 13:51 Uhr)
merlinvs ist offline   Mit Zitat antworten
Alt 20-01-2005, 15:44   #4 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
hallo!

ich ahbe jetzt eine funktion und eine schleife gebastelt, die die einzelnen filme lädt...

ActionScript:
  1. function ladeClips() {
  2.     for (i=0; i<anzahlDateien; i++) {
  3.         tiefe = arr_files[i][0];
  4.         clipName = arr_files[i][2];
  5.         clipDest = arr_files[i][3];
  6.         loaded = arr_files[i][5];
  7.         ladestatus(clipDest, clipName, tiefe, i);
  8.     }
  9. }

wichtig hier,
loaded = arr_files[i][5];
darin wird beim auslesen der xml ein false / ein null-wert gesetzt und wenn der film geladen wurde ein true / 1 wert...

wie amche ich das jetzt, dass die for-schleife den nächsten durchgang erst startet, wenn der loaded wert auf 1 ist?

ich aheb es mit nocheiner for schleife proboiert, einer while schleife, und einem onenterFrame event, aber nichts hat funktioniert ;(

jemand eine idee?
__________________
dies ist der anfang vom rest deines lebens
merlinvs ist offline   Mit Zitat antworten
Alt 20-01-2005, 17:18   #5 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Zitat:
Zitat von pape
wenn's net geht, dann poste mal die fla!
.
pape ist offline   Mit Zitat antworten
Alt 20-01-2005, 17:41   #6 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
huch...

hier ist die fla, die bilde rhabe ich jetzt nicht mitgenommen,d a ich zuim testen 2 mehr als 1000 kb bilder genommen ahbe, du aknsnt aber unter /scripts/ in der xml ander bilder angeben, noch mehr dazusetzen, und sollte auch mit anderen sachen gehen *s* mit *.swf's gehts, das weis ich, darum auch am ende des codes im 2. frame die verkleinerung auf 5% also wegen den großen bildern...

das problem ist ahlt, dass er die beiden load_befehle direkt ancheinander ausführt...


Merlin
Angehängte Dateien
Dateityp: rar preloader.rar (7,9 KB, 11x aufgerufen)
__________________
dies ist der anfang vom rest deines lebens

Geändert von merlinvs (20-01-2005 um 17:42 Uhr)
merlinvs ist offline   Mit Zitat antworten
Alt 20-01-2005, 18:45   #7 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
hi!
versuch es mal so
ActionScript:
  1. function ladestatus(datei, clip, tiefe) {
  2.     ladeziel = _root.createEmptyMovieClip(clip, tiefe);
  3.     ladeziel.loadMovie(datei);
  4.     loader.onEnterFrame = function() {
  5.         geladen = _root.ladeziel.getBytesLoaded();
  6.         zuladen = _root.ladeziel.getBytesTotal();
  7.         if (geladen>=10) {
  8.             prozent = Math.round(geladen/zuladen*100);
  9.             kbGeladen = Math.round(geladen/1024);
  10.             kbZuladen = Math.round(zuladen/1024);
  11.             this.prozentanzeige.text = prozent+" Prozent geladen";
  12.             this.txtGeladen.text = kbGeladen+" KB geladen";
  13.             this.txtGesamt.text = kbZuladen+" KB Gesamt";
  14.             this.balken._xscale = prozent;
  15.             if (prozent>=100) {
  16.                 delete this.onEnterFrame;
  17.                 if (anzahlDateien) {//wenn noch weitere Dateien
  18. //vorhanden sind, dann
  19.                     ladeClips();//nächste laden
  20.                 }
  21.             }
  22.         }
  23.     };
  24. }
  25. stop();
  26. function ladeClips() {
  27.     anzahlDateien--;//anzahl der zualdenen Files eins runter, da sie jetzt gelden wird
  28.     tiefe = arr_files[anzahlDateien][0];
  29.     clipName = arr_files[anzahlDateien][2];
  30.     clipDest = arr_files[anzahlDateien][3];
  31.     loaded = arr_files[anzahlDateien][5];
  32.     ladestatus(clipDest, clipName, tiefe);
  33. }
  34. ladeClips();
  35. mc_Container1._x = 300;
  36. mc_Container0._xscale = 10;
  37. mc_Container0._yscale = 10;
  38. mc_Container1._xscale = 10;
  39. mc_Container1._yscale = 10;

grz
pape

Geändert von pape (20-01-2005 um 18:47 Uhr)
pape ist offline   Mit Zitat antworten
Alt 20-01-2005, 20:24   #8 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
hey!

danke, jetzt funktioniert es, soweit ich es sehe
auf sowas muss man ersteinmal kommen

danke, und Gruß Merlin
__________________
dies ist der anfang vom rest deines lebens
merlinvs ist offline   Mit Zitat antworten
Alt 20-01-2005, 21:53   #9 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
btw: die Lösung habe ich übrigens in meinem ersten Post direkt am anfang geschrieben!
...wenn du mal nen bisl nachgedacht hättest, was das meint, was ich da als Kommentar reingeschrieben habe, dann hättest du es bestimmt auch selbst hinbekommen

nix für ungut!

grz
pape
pape ist offline   Mit Zitat antworten
Alt 20-01-2005, 22:36   #10 (permalink)
Gabber-Freak
 
Registriert seit: Mar 2003
Ort: Sörup / Flensburg
Beiträge: 110
ja, das stimmt, jetzt wo ich den code sehe schon...

ich ahbe es allerdings imemr anders gemacht, ich habe as aber imemr falschrum gemacht...

ich weis das schon garnichtmehr genau, das war was if(jetztGeladen<anzahlDateien) {
}

das hätte vielleciht auch funktioniert, allerdings wollte ich immer an diesem punkt der for schleife oder der funktion sagen, er soll die nächste datei alden, und da haperte es bei mir...

da ich also so schief gedacht habe, habe ich ganz an deiner jetztigen lösung vorbeigedacht, da ich diese art auch garnicht kannte konnte ich acuhnoch viel schwerer daruf kommen...

nunja, jetzt geht es, und ich verstehe den code, und das ist doch super da kann cih morgen gleich weitermachen!

danke für die hilfe!
__________________
dies ist der anfang vom rest deines lebens
merlinvs 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 03:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele