Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-06-2008, 15:46   #1 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
Preloader bei aus XML gelesenen Bildpfaden

Hallo,

nachdem ich ja nun schon meine galerie soweit fertig hab, fehlt der Preloader. Ich hab jetzt sehr vieles hier gelesen und auch getestet, aber ich komm einfach nicht weiter, vielleicht hat jemand von euch nen tipp für mich.

Ansehen könnt ihr euch das ganze hier - geht auch ohne Preloader, aber man merkt halt, dass nochwas geladen wird. Das möchte ich ändern.

Ob als Balken oder Prozentanzeige is mir eig. wurst... mein bisheriges Problem besteht darin, dass schon der Aufruf mit getbytesTotal beim ersten Klick auf ein Thumb 0 ausspuckt, und erst beim zweiten Mal die richtige Bytezahl, ich vermute, dass dies passiert, weil das Bild ja inzwischen schonmal durch den ersten Klick geladen wurde.

Das ist die Routine, mit der die MovieClips für die großen Bilder erstellt und positioniert werden:
ActionScript:
  1. XMLdaten.onLoad = function(success) {
  2.    
  3.     XMLdaten_namen = [];
  4.     XMLdaten_file = [];
  5.    
  6.     var bigNumber:Number = XMLdaten.firstChild.childNodes.length;
  7.  
  8.     if (success) {
  9.         for (i=0; i<bigNumber; i++) {
  10.             XMLdaten_name[i] = XMLdaten.firstChild.childNodes[i].attributes.dateiname;
  11.             XMLdaten_file[i] = XMLdaten.firstChild.childNodes[i].attributes.file;
  12.            
  13.             _root.big.createEmptyMovieClip("big"+i, i);
  14.             _root.big["big"+i].createEmptyMovieClip("bild", 0);
  15.             //_root.big["big"+i].bild.loadMovie(XMLdaten_file[i], 0);
  16.                
  17.             _root.big["big"+i]._alpha = 0;
  18.             _root.big["big"+i]._x = 5000;
  19.             _root.big["big"+i]._y = 0;
  20.            
  21.             _root.big.big0._x = 10;
  22.             _root.big.big0._alpha = 100;
  23.         }
  24.     }
  25. }

Und mit dieser Funktion fange ich die Klicks auf die Thumbs ab und lasse das große Bild einfliegen. Und da müsste der Preloader hin:
ActionScript:
  1. function einzeln(bildNr, bildAnzahl) {
  2.     _root.thumbs.buttons["button"+bildNr].onRelease = function () {  
  3.         _root.big["big"+bildNr].bild.loadMovie(XMLdaten_file[bildNr], 0);
  4.         //hier liegt das Problem!!
  5.         var t:Number = _root.big["big"+bildNr].bild.getBytesTotal();
  6.         trace(t);
  7.         for (j=0; j<bildAnzahl; j++) {
  8.             _root.big["big"+j]._alpha = 0;
  9.         }
  10.         _root.big["big"+bildNr]._x = 10;
  11.         _root.big["big"+bildNr]._alpha = 100;
  12.        
  13.         if (letztesBild <= bildNr) {
  14.             TransitionManager.start(_root.big, {type:Fly, direction:Transition.IN, duration:1, easing:Strong.easeOut, startPoint:6});
  15.         }
  16.         else {
  17.             TransitionManager.start(_root.big, {type:Fly, direction:Transition.IN, duration:1, easing:Strong.easeOut, startPoint:4});
  18.         }
  19.         //trace("letztes Bild: " + letztesBild);
  20.         letztesBild = bildNr;
  21.     }//schließen onRelease
  22. }

Wie unschwer zu erkennen ist, lasse ich den loadMovie-Befehl erst auf Klick auf eines der Thumbs ausführen. Das funktioniert einwandfrei, aber eben die Abfrage nach den Gesamtbytes liefert beim ersten Klick 0, beim zweiten erst das richtige.

Wer kann und würde mir denn da nochmal helfen?

lg
Bine

Geändert von jun-jun (17-06-2008 um 15:50 Uhr)
jun-jun ist offline   Mit Zitat antworten
Alt 18-06-2008, 22:46   #2 (permalink)
asFlasher
 
Benutzerbild von ksw24
 
Registriert seit: Jul 2006
Beiträge: 1.136
wie ist es mit:
PHP-Code:
var t:Number XMLdaten_file[bildNr].getBytesTotal(); 
kommt es da zu dem selben effekt?
könnte mir vorstellen, da du ja noch nix im

_root.big["big"+bildNr].bild

geladen hast das natürlich 0 ist und erst beim zweiten aufruf, wo ja der inhalt von

_root.big["big"+bildNr].bild

gleich

XMLdaten_file[bildNr]

ist, dann halt die bytes ausgegeben werden.

Du müsstest also die bytes des bildes ermitteln und nicht die des movie-clips.
ksw24 ist offline   Mit Zitat antworten
Alt 19-06-2008, 07:05   #3 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
Erstmal vielen Dank für die Antwort. Ich versuchs mal

Muss doch irgendwie gehen, der Kram ^^

Geändert von jun-jun (19-06-2008 um 07:06 Uhr)
jun-jun ist offline   Mit Zitat antworten
Alt 19-06-2008, 07:54   #4 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
Zitat:
Zitat von MistaM Beitrag anzeigen
wie ist es mit:
PHP-Code:
var t:Number XMLdaten_file[bildNr].getBytesTotal(); 
kommt es da zu dem selben effekt?
So, bin schlauer, das trace spuckt "undefined" aus. Mit dem hier:

PHP-Code:
var t:Number Number(XMLdaten_file[bildNr].getBytesTotal()); 
kommt "NaN" raus. Weiß der Geier, wieso, ich nicht :/
jun-jun ist offline   Mit Zitat antworten
Alt 19-06-2008, 10:54   #5 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
Harr... niemals aufgeben... es funzt =)

habe mir als hilfsmittel irgendwas über dateigröße schon vorher über php auslesen und übers xml mitgeben gedacht... und plötzlich funktionierte es.

ActionScript:
  1. function einzeln(bildNr, bildAnzahl, bildSize) {
  2.     _root.thumbs.buttons["button"+i].onRelease = function () {
  3.         _root.big["big"+bildNr].bild.loadMovie(XMLdaten_file[bildNr], 0);
  4.         this.onEnterFrame = function() {
  5.             _root.laden._visible = true;
  6.             _root.laden.text = "Bild " + bildNr + " wird geladen";
  7.             var t:Number = _root.big["big"+bildNr].bild.getBytesLoaded();
  8.             trace("getBytesLoaded: " + t);
  9.                
  10.             if (t < bildSize) {
  11.                 trace("if abfrage");
  12.                 var tif:Number = this.getBytesLoaded();
  13.                 trace("t innerhalb if: " + tif);
  14.             }
  15.             else {
  16.                 trace("else");
  17.                 delete this.onEnterFrame;
  18.                 _root.laden._visible = false;
  19.             }
  20.         }
  21.         for (j=0; j<bildAnzahl; j++) {
  22.             _root.big["big"+j]._alpha = 0;
  23.         }
  24.         _root.big["big"+bildNr]._x = 10;
  25.         _root.big["big"+bildNr]._alpha = 100;
  26.        
  27.         if (letztesBild <= bildNr) {
  28.             TransitionManager.start(_root.big, {type:Fly, direction:Transition.IN, duration:1, easing:Strong.easeOut, startPoint:6});
  29.         }
  30.         else {
  31.             TransitionManager.start(_root.big, {type:Fly, direction:Transition.IN, duration:1, easing:Strong.easeOut, startPoint:4});
  32.         }
  33.         //trace("letztes Bild: " + letztesBild);
  34.         letztesBild = bildNr;
  35.     }//schließen onRelease
  36. }

(wer spendiert mir das wohlverdiente Eis?)

Geändert von jun-jun (19-06-2008 um 10:56 Uhr)
jun-jun 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 02:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele