Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-01-2006, 10:12   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
getBytesLoaded / getBytesTotal wird ignoriert?!

Hallo zusammen,

ich habe eine Frage zu folgendem Szenenaufbau:

Frame 10:
Zitat:
loaderFadeIn();
Frame 11 ist leer

Frame 12:
Zitat:
_global.foto_mc.loadMovie(filePath_str);
Frame 13:
Zitat:
if(_global.foto_mc.getBytesLoaded()<_global.foto_m c.getBytesTotal()){
setLoaderStatus();
gotoAndPlay(11);
}else{
gotoAndPlay("loader_FadeOut");
}
Frame 14:
Zitat:
stop();
Diese Szene befindet sich auf der Hauptzeitleiste. Bisher dachte ich, das wäre ok so. Ist es aber nicht, denn die Abfrage in Frame 13 wird irgnoriert, sprich loadMovie wird gestartet, der Hauptmovie läuft aber einfach weiter, wodurch meine Ladestatusanzeige nicht funktioniert...

Kann mir einer sagen wieso? Irgendwie habe ich im Moment ein echtes Verständnisproblem...
Oli K. ist offline   Mit Zitat antworten
Alt 06-01-2006, 10:20   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Dein Fehler liegt darin das du den "Abspielkopf" wieder auf Frame11 schickst und in Frame12 den Film nocheinmal lädst...und das eventuell bei der ersten Abfrage von getBytesLoaded und co noch keine Werte verfügbar sind.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (06-01-2006 um 10:23 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 06-01-2006, 10:33   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Wow, Danke für die Antwort. Das ging schnell...

D.h. wenn ich Frame 11 und 12 vertausche und in Frame 13 sage "gotoAndPlay(12)" sollte das funktionieren? Ui, super. Das probiere ich heute abend mal aus.
Oli K. ist offline   Mit Zitat antworten
Alt 06-01-2006, 18:58   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Okay, konnte nun mal die Szene umbauen. Leider hat es nichts gebracht...

Wie gesagt, der Movie macht den Eindruck, als würde er die getBytesLoaded und getBytesTotal Abfrage nicht ein Einziges Mal ausführen und liefert immer gleiche Werte zurück, selbst wenn - wie ich es getestet habe - er ein File mit 6MB laden soll. Er läuft einfach weiter.

Hat jemand noch einen Tipp...
Oli K. ist offline   Mit Zitat antworten
Alt 06-01-2006, 19:56   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
?
Hast du dir das mal mit trace ausgeben lassen, was getBytesLoaded und getBytesTotal für einen wert das erste mal zurück geben???
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 06-01-2006, 22:14   #6 (permalink)
.
 
Benutzerbild von kuat
 
Registriert seit: Oct 2001
Ort: Hamburg
Beiträge: 70
Man sollte zusätzlich immer prüfen ob die BytesTotal überhaupt schon eine Mindestgröße hat.
Am Anfang eines Ladevorgangs passiert es gerne mal,
dass die BytesTotal und BytesLoaded beide 0 sind,
oder dass ein Wert 0 und der andere -1 ist.

Ich prüfe meistens so:
PHP-Code:
if( mc.getBytesTotal() > 100 && mc.getBytesLoaded() == mc.getBytesTotal() )
{
    
// fertig mit laden
}
   
// nicht fertig. loopen.

__________________

kuat.de - chriskurt.de - . .

Geändert von kuat (06-01-2006 um 22:24 Uhr)
kuat ist offline   Mit Zitat antworten
Alt 07-01-2006, 00:00   #7 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Uff..., habs endlich hinbekommen. Danke Euch für die Antworten!

Die Werte habe ich per trace ausgeben lassen und sahen auch eigentlich ok aus. Letztendlich habe ich die Szene nun so aufgebaut.

Frame 10:
Zitat:
loaderFadeIn();
Frame 11:
Zitat:
trace("Lade Foto " + arrImages[iImage] + " in " + _global.foto_mc._name);
_global.foto_mc.loadMovie(arrImages[iImage]);
Frame 12 ist leer.

Frame 13:
Zitat:
setLoaderStatus();
Frame 14:
Zitat:
_global.foto_mc.onEnterFrame = function(){
trace("geladen: " + this.getBytesLoaded());
trace("zu laden: " + this.getBytesTotal());

if(this.getBytesLoaded()>=this.getBytesTotal()){
_root.loader_mc.ByteDisplay_mc.ByteDisplay.text = "100%";
trace("play scene: loader_fadeout");
_root.gotoAndPlay("loader_fadeout");
}

delete this.onEnterFrame;
}

nextFrame();
Frame 15:
Zitat:
gotoAndPlay(12);
Der Knackpunkt war letztendlich die Funktion in Frame 14. Statt des nextFrame(); hatte ich dort vorher erst gar nichts nach der Funktion stehen, dann habe ich ein stop(); verwendet und nachdem ich dann germerkt habe, dass Flash dort eine Info benötigt, was weiter passieren soll, das nextFrame(); abgesetzt. Auch die Funktion onEnterFrame musste ich dort nutzen, weil ohne Funktion die getBytesLoaded und getBytesTotal zwar stimmten, aber auch wieder nicht ausgewertet wurden. Ganz komisch...

Die Lösung, die ich wie beschrieben nun habe, verstehe ich zwar. Allerdings verstehe ich nicht, wieso meine anderen Ansätze nicht funktionierten.

Jedenfalls kommt nach dem Klick nun wirklich immer der Ladestatus (auch bei einer 6MB Datei) und zählt artig hoch, bis er ausfaded und das nächste Foto anzeigt.

Aber ich bin noch nicht fertig. D.h. ich werde mit Sicherheit weiter nerven...

Geändert von Oli K. (07-01-2006 um 00:03 Uhr)
Oli K. 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 14:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele