Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-01-2004, 10:56   #1 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
Question preloader funktioniert online nicht

hallo zusammen

das ist mein code für den preloader auf frame 1

ActionScript:
  1. function thumbladen () {
  2. //schleife zum thumbnail 1-4 reinladen
  3. for (var i = 1; i <= 4; i++) {
  4.     trace("thumbladen () " + i + "wird ausgeführt");
  5.     //bestimmung des mc's um den sich alles dreht
  6.     var mc = this["thumb"+i];
  7.    
  8.                             //variableninitalisierung für's preloaden
  9. var startx = 0;//mc._x;         //x-anfansgskoordinaten des balkens
  10. var starty = 0;//mc._y;         //y-anfangskoordinaten des balkens
  11. var breite = 151;         //breite des balkens
  12. var hoehe = 4;        //hoehe des balkens
  13. var farbe = 0xffd60c;      //farbe des balkens
  14. var alpha = 100;            // alphawert  des balkens
  15.  
  16. trace("x von mc ist: " + startx);
  17.  
  18. //zeichnen des balkens
  19. mc.createEmptyMovieClip("balken_mc",4);//erstellt ein mc in thumb_X
  20.         //richtige position bla
  21.         mc.balken_mc._x = startx;      
  22.         mc.balken_mc._y = starty;
  23.         with(mc.balken_mc){
  24.             beginFill(farbe,alpha);
  25.             lineTo(0,hoehe);
  26.             lineTo(breite,hoehe);
  27.             lineTo(breite,0);   
  28.             lineTo(0,0);
  29.             endFill();
  30.             };
  31.    
  32.    
  33.     // das bild ist...
  34.     bildurl = "stuff/" + _global.kundennummer + "/" + _global.kategorie + "_" + i + ".jpg";
  35.     //erstelle den leeren mc
  36.     mc.createEmptyMovieClip("leer_mc",1);
  37.     //alpha einstellen damit es erstmla unsichtbar ist
  38.     mc.leer_mc._alpha = 0;
  39.    
  40.     trace("leer_mc erstellt");
  41.    
  42.     //lade da rein das bild
  43.     mc.leer_mc.loadMovie(bildurl);
  44.     //zum schluss noch alles skalieren
  45.     mc.leer_mc._xscale = 22;
  46.     mc.leer_mc._yscale = 22;
  47.    
  48.     trace("bild reingeladen");
  49.    
  50.     //jetzt die preload anzeige ausführen
  51.                 mc.balken_mc.onEnterFrame = function(){
  52.                        
  53.                        
  54.                         //lese die grössen von dem nun nicht mehr leeren mc
  55.                         var t = this._parent.leer_mc.getBytesTotal();
  56.                         var g = this._parent.leer_mc.getBytesLoaded();
  57.                         trace(t+" "+g);
  58.                         // wenn es vorhanden ist
  59.                         if(t>0){
  60.                                
  61.                                 if((g >= t) && (g > 4)){//wenn es fertig geladen
  62.                                        
  63.                                        /* // alles skalieren
  64.                                         this._parent.leer_mc._xscale = 22;
  65.                                         this._parent.leer_mc._yscale = 22;
  66.                                         ******* unnütig wird oben schon einmal gemacht
  67.                                         entlastet so die enterframe dings
  68.                                         */
  69.                                        
  70.                                         //bildnummereins müsste geladen sein
  71.                                         //ist die testvar für das erste bild was automatisch
  72.                                         //eingeladen wird
  73.                                          nummereins = true;
  74.                                        
  75.                                         if(this._parent.leer_mc._alpha >= 100){ //wenn die thumbs sichtbar sind
  76.                                             //lösche balken plus enterframe
  77.                                             this.clear();
  78.                                             delete this.onEnterFrame; //tja warum tut ers nicht?
  79.                                         } else {
  80.                                             // alpha einfaden
  81.                                             // wird schrittweise um 10 hochgezählt bis es um so 100 ist.
  82.                                             this._parent.leer_mc._alpha = this._parent.leer_mc._alpha + 10;
  83.                                                 }
  84.                                 } else {// wenn nich fertig geladen
  85.                                         // = total t sind noch grösser als geladen g
  86.                                         //prozent des geladenen errechnen + anzeigen
  87.                                         var p = (g/t)*100;
  88.                                         this._xscale = p;  //this ist balken_mc = warum macht der
  89.                                                             //drecksbalken dann nichts?
  90.                                         trace("p ist: "+p); //wird doch eh nciht getraced
  91.                                 }
  92.                         }else{ // t ist kleiner als 0 (= -1) = bild ist nicht da
  93.                                 this._xscale = 0;
  94.                                 this.clear();
  95.                                 delete this.onEnterFrame;
  96.                         }
  97.                 }
  98.  
  99.    
  100.    
  101.    
  102.     }
  103. };

ist jetzt aus dem zusammenhang gerissen, aber ich denke cih habe alles gut kommentiert. alle namen und variablen stimmen, uach die mc namen etc.

im zweiten frame nur thumbaufruf(); (damit ich absolut sicher sein kann dass alles im ertenf rame geladen ist)

beim testen online lädt er beim erstenmal aufrufen nichts, d.h. man sieht weder den preloader noch das geladene bild. beim zweiten mal laden zweigt der den preloader mit 100% kurz an und läst lässt dann das bild einfaden.

offline lädt er den preloader beim ersten mal UND fadet dann die bilder ein.

woran könnte das liegen?
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 11:10   #2 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
ergänzung:

ich weiss dass hier preloader fragen nciht gern gesehen werden. in der suche habe ich einen ähnlichen thread entdeckt allerdings mit ohne problemlösung drin. vielleicht bekommt ja dieser hier eine! *G*
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 11:43   #3 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
würde beim onEnterFrame so abfragen ob der mc geladen ist.

ActionScript:
  1. if (leermc._height > 0) {
  2.    trace ("fertiggeladen");
  3. } else {
  4.    //berechne prozent und aktualiser deinen balken
  5. }
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 12-01-2004, 12:42   #4 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
du meisnt damit das t>0 ersetzen?
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 13:40   #5 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
ja hatte da auch meine probleme mit, ich glaub getBytesTotal() gibt am anfang irgendwie komische werte raus. mit _height > 0 hatte ich bisher nie probleme.
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 12-01-2004, 13:59   #6 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
hat keine änderung bewirkt
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 14:39   #7 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
hier löscht du ja den enterFrame wenn du noch nix für t bekommen hast

ActionScript:
  1. }else{ // t ist kleiner als 0 (= -1) = bild ist nicht da
  2.                                 this._xscale = 0;
  3.                                 this.clear();
  4.                                 delete this.onEnterFrame;
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 12-01-2004, 14:44   #8 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
wenn ich nix für t bekomme gehe ich (bzw flash ) davon aus dass das bild nciht existiert und hör auf ja. so überprüfe ich ohne php eine (weitestgehende) variable bildergallerie.

was meinst du jetzt damit?

dass t zurückzugeben zulange dauert und dann schon der enterframe gelöscht wird ?

hab an ner anderen stelle (ein frame später) eine andere fuktion die auch damit arbeitet, meinst du die kommen sich ins gehege? die bilddateien sind immer so um die 47KB gross, der server ist eingentlich schon flott unterwegs.
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 14:46   #9 (permalink)
jungflasher
 
Benutzerbild von sesamstrassenbe
 
Registriert seit: Oct 2002
Ort: Dortmund
Beiträge: 132
probier's doch mal mit "if (t >= 0)"...
__________________
sesamstrassenbert. so viel platz muss sein ;-)

www.digisurf.de
sesamstrassenbe ist offline   Mit Zitat antworten
Alt 12-01-2004, 14:48   #10 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
Flash hat nicht sofort nach dem loadMovie eine Zahl für getBytesTotal(), offline ja, online nicht. Du bekommst für kurze zeit ein "NaN" als rückgabe, da springt er bei dir schon aus der funktion raus.

Ob das Bild existiert solltest du vorher überprüfen, per php oder so.
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 12-01-2004, 14:57   #11 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
Zitat:
Geschrieben von K-Grabowski
Ob das Bild existiert solltest du vorher überprüfen, per php oder so.
genau das kann, will, mag ich ja nicht. das war ja der grund fürm das workaround.



mit >=0 klappt es leider auch nciht


//EDIT kann ich igendwie NaN auffangen?

if ( t == "NaN") ????
__________________
x 600.6
y 123.3
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 15:11   #12 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
kannst du mit

t.toString() == "NaN"

aber du musst bedenken, das selbst wenn das Bild existiert, du am anfang ein "NaN" bekommen wirst.
__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 12-01-2004, 15:48   #13 (permalink)
jungflasher
 
Benutzerbild von sesamstrassenbe
 
Registriert seit: Oct 2002
Ort: Dortmund
Beiträge: 132
wie wär's mit if "(t <> -1)"

dann springt er bei "else" nur raus, wenn t wirklich -1 ist, oder?
__________________
sesamstrassenbert. so viel platz muss sein ;-)

www.digisurf.de
sesamstrassenbe ist offline   Mit Zitat antworten
Alt 12-01-2004, 15:54   #14 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
@sesamstrassenbe(rt)

wie meinen? was macht <> ??

ich habs jetzt im mom so (was nicht funktioniert
ActionScript:
  1. if( t >= 0 ){
  2.                                
  3.                                 if((g >= t) && (g > 4)){//wenn es fertig geladen
  4.                                         //bildnummereins müsste geladen sein
  5.                                         //ist die testvar für das erste bild was automatisch
  6.                                         //eingeladen wird
  7.                                          nummereins = true;
  8.                                        
  9.                                         if(this._parent.leer_mc._alpha >= 100){ //wenn die thumbs sichtbar sind
  10.                                             //lösche balken plus enterframe
  11.                                             this.clear();
  12.                                             delete this.onEnterFrame; //tja warum tut ers nicht?
  13.                                         } else {
  14.                                             // alpha einfaden
  15.                                             // wird schrittweise um 10 hochgezählt bis es um so 100 ist.
  16.                                             this._parent.leer_mc._alpha = this._parent.leer_mc._alpha + 10;
  17.                                                 }
  18.                                 } else {// wenn nich fertig geladen
  19.                                         // = total t sind noch grösser als geladen g
  20.                                         //prozent des geladenen errechnen + anzeigen
  21.                                         var p = (g/t)*100;
  22.                                         this._xscale = p;  //this ist balken_mc = warum macht der
  23.                                                             //drecksbalken dann nichts?
  24.                                         trace("p ist: "+p); //wird doch eh nciht getraced
  25.                                 }
  26.                         } else if (t.toString() == "NaN") { //falls irgendwas nicht stimmt
  27.                             //haha: mach gar nichts!
  28.                         } else  { // t ist kleiner als 0 (= -1) = bild ist nicht da
  29.                                 this._xscale = 0;
  30.                                 this.clear();
  31.                                 delete this.onEnterFrame;
  32.                                 }
  33.                 }

mit der selben methode (get bytesloaded kann ich es an anderer stelle perfekt überprüfen.

kann es sein dass es bei mehrfachen verwenden gleichzeitig von verchiedenen programmstelen aus nicht funktioniert?

hab nämlich nur ein frame später

ActionScript:
  1. var mc = this["thumb"+bild].leer_mc;
  2. //trace (mc)
  3. //var mc = "stuff/" + _global.kundennummer + "/" + _global.kategorie + "_" + bild + ".jpg"
  4. var bt = mc.getBytesTotal();
  5. durchlauf = durchlauf + 1;

(wird durch for schleifen 4x3 mal aufgerufen)

////EDIT nein hab eben mal testweie den aufruf dafür unterbunden und es funktioniert trotzdem nicht

sehr komisch alles. den heute hab ich noch davor mit eigentlich dem selben preloader einen in 15 min runtergeschireben der alles perfekt macht. und fast der selbe code hier amcht soche probleme.

nach murphy wäre es die einfachste lösung. was wäre das absolut billigste was hierran nicht stimmen kann? bilde sind vorhanden, namen etc stimmen auch alle
__________________
x 600.6
y 123.3

Geändert von dante (12-01-2004 um 15:59 Uhr)
dante ist offline   Mit Zitat antworten
Alt 12-01-2004, 15:58   #15 (permalink)
jungflasher
 
Benutzerbild von sesamstrassenbe
 
Registriert seit: Oct 2002
Ort: Dortmund
Beiträge: 132
naja, solange t ungleich -1 (also auch NaN) mache diesunddas...

"else" gilt dann NUR wenn t GLEICH -1, also das bild wirklich nicht vorhanden ist...
__________________
sesamstrassenbert. so viel platz muss sein ;-)

www.digisurf.de
sesamstrassenbe 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:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele