Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-01-2011, 13:40   #1 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
Flash Container Preload Problem

Hallo - gibt immer wieder was Neues - Mein Flash Preloader Framework spinnt bei einem meiner Klienten plötzlich - hatte noch nie Probleme damit - Die swf, die geladen wird, hat auch ein stop(); im ersten Frame und das Label "start", das angesteuert wird... Darin liegt's nicht - Es kommt immer zu:
Zitat:
Adobe Flash Player 10 wird durch ein Skript in diesem Film verlangsamt...blablabla
Kann den Fehler nicht replizieren. Er hat nur eine langsame Internetverbindung (375K) und nutzt IE. Die Datei zum testen des loaders ist 8MB groß. Die Fehlermeldung kommt bei rund 94%...

Habe denke ich einen sauberen Code - weiss wirklich nicht was daran nicht gehen soll??? Bin für jede Hilfe dankbar!


Code:

preloader._visible = false;

preloader.bar._xscale = 0;

var mclListener:Object = new Object();
mclListener.onLoadInit = function(container:MovieClip) {
    trace('initialized');
};

mclListener.onLoadStart = function(container:MovieClip) {
    preloader._visible = true;
    trace('started');
};

mclListener.onLoadProgress = function(mc, w, t) {
    trace('progress: '+w+", "+t);
    var w = container.getBytesLoaded();
    var t = container.getBytesTotal();
    countdown = Math.round(w/t*100);
    preloader.percent.text = Math.round(w/t*100)+"%";
    preloader.bar._xscale = 4.4*Math.round(w/t*100);
 
};

mclListener.onLoadComplete = function(container:MovieClip) {
    trace("loaded");
	_level0.container._lockroot = true; 
	_level0.container.gotoAndStop("start");

	
};


mclListener.onLoadError = function(container:MovieClip, errorCode:String) {
    trace('not loaded');
};

 _level0.createEmptyMovieClip("container",1)
var container1:MovieClipLoader = new MovieClipLoader();
container1.addListener(mclListener);
container1.loadClip("tester1.swf", container);

Geändert von wommi (28-01-2011 um 13:42 Uhr) Grund: Ergänzung
wommi ist offline   Mit Zitat antworten
Alt 28-01-2011, 14:05   #2 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Kann man sich das mal anschauen? Link etc. ich sitzt hier auch auf einer langsamen Leitung!
__________________
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 28-01-2011, 14:09   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
In dem geposten Code sehe ich eigentlich nichts, was für solche Problem verantwortlich sein könnte. Das Problem liegt IMO irgendwo anders. Problematisch sind z.B.:

  • onEnterFrames und Intervalle, die Ihrerseits Prozesse mit einem onEnterFrame oder Interval aufrufen.

  • rekusive Funktion (oder Funktionsschleifen), in denen die Abbruchbedingung nicht eintritt.

  • oder for- oder while-Schleifen, in denen ebenfalls die Abbruchbedingung versagt.

Wenn dieses Problem erst durch eine niedrige Ladegeschwindigkeit zu Tage tritt, vermute ich als Auslöser...
  • Objekte, die bei einem zu frühen Zugriff noch nicht existieren und damit null sind

  • oder Zahlen, die (aus welchen Gründen auch immer) NaN oder undefined werden
...und damit letztlich dazuführen, das irgendeine Schleife nicht beendet werden kann.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (29-01-2011 um 12:30 Uhr)
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 28-01-2011, 14:36   #4 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
Hey Danke für das Feedback!
@ RustyCake - ich schicke dir den Link gerne in einer email und die daten als zip - kann den Link hier nicht öffentlich posten, da ich als Subunternehmer arbeite... und der eigentliche Auftraggeber von mir nichts wissen soll ;/

Ich schick dir erstmal den link als PN...

PS der Fehler tritt im IE7 und Firefox auf

@ Martin
Habe keine weiteren aktiven Skripte - Die geladene Datei enthält lediglich große jpgs, die zum simulieren des Preloaders reingesetzt wurden...
Es scheint fast so, als ob die Preloading Schleife die Sache verursacht und der Player wegen des langen Ladens denkt, dass das Skript nicht reagiert...

Geändert von wommi (28-01-2011 um 14:47 Uhr)
wommi ist offline   Mit Zitat antworten
Alt 28-01-2011, 15:50   #5 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Berichtigung, der Fehler tritt auch in Opera auf!
Hab das mal getestet, scheint im Progress die "countdown-geschichte zu sein.
Ist übrigens nicht schön geschrieben das Script
__________________
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 28-01-2011, 17:23   #6 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
...hmm - ja - der countdown wird ja eigentlich nicht benötigt... hatte damit zuvor noch etwas rumprobiert.... schönes Scripten war leider noch nie mein Ding... Habe jetzt die countdown-Zeile gelöscht

Ich denke jedoch, dass der Hase in der Variblen t begraben liegt...?

Habe die Zeile mit "var t = container.getBytesTotal();" auch raus, da der Parameter von der Funktion schon übergeben wird - zusätzlich ist jetzt noch eine Abfrage drinnen, ob der parameter t auch exisitiert...
Code:
mclListener.onLoadProgress = function(mc, w, t) {
    trace('progress: '+w+", "+t);
    var w = container.getBytesLoaded();
  if (t) {  
    //countdown = Math.round(w/t*100);
    preloader.percent.text = Math.round(w/t*100)+"%";
    preloader.bar._xscale = 4.4*Math.round(w/t*100);
  }
};
- kannst du Bitte noch mal schaun ob es jetzt geht?

...habe jetzt die Vermutung , dass dort die Ursache liegt und das Skript nicht mit dem Bestimmen der Gesamtbytes hinterherkam?

Geändert von wommi (28-01-2011 um 19:11 Uhr)
wommi ist offline   Mit Zitat antworten
Alt 28-01-2011, 23:56   #7 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Probiers mal mit dem, hab ich getestet, ist nicht abgekackt.
PHP-Code:
//
fscommand("fullscreen","false");
fscommand("allowscale""true");
fscommand("showmenu","false");
_quality "BEST";
//
this.createEmptyMovieClip("container",this.getNextHighestDepth());
var 
mclListener:Object = new Object();
var 
container1:MovieClipLoader = new MovieClipLoader();
//
preloader._visible false;
preloader.bar._xscale 0;
//
mclListener.onLoadInit = function(target:MovieClip) {
    
trace('initialized');
};
//
mclListener.onLoadStart = function(target:MovieClip) {
    
preloader._visible true;
    
trace('started');
};
//
mclListener.onLoadProgress = function(target:MovieClipbytesLoaded:NumberbytesTotal:Number) {
    
trace('progress: '+bytesLoaded+", "+bytesTotal);
    
//countdown = Math.round((bytesLoaded/bytesTotal)*100);
    
preloader.percent.text Math.round((bytesLoaded/bytesTotal)*100)+"%";
    
preloader.bar._xscale 4.4*Math.round((bytesLoaded/bytesTotal)*100);
};
//
mclListener.onLoadComplete = function(target:MovieClip) {
    
trace("loaded +="+target);
    
target._lockroot true
    
target.gotoAndStop("start");
};
//
mclListener.onLoadError = function(container:MovieCliperrorCode:String) {
    
trace('not loaded');
};
//
container1.addListener(mclListener);
container1.loadClip("tester1.swf"container); 
__________________
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 29-01-2011, 11:19   #8 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
...hey, vielen vielen Dank schon mal vorab - und dass du dir die Zeit genommen hast!

Hab's zwar noch nicht selbst testen können - ist aber schon einmal definitiv ein sehr gutes Zeichen, dass es bei dir funktioniert!!!

Du hast definitiv ein paar Bier gut bei mir!!!
wommi ist offline   Mit Zitat antworten
Alt 29-01-2011, 18:14   #9 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
...habe gerade das Feedback vom Kunden - kommt leider immer noch dazu - wenn ich folgende Zeilen rausnehme kommt der Fehler nicht - das dumme ist nur, dass dann auch keine Lade-Anzeige realisiert werden kann ;/

warum ist Flash bei so'ner einfachen Geschichte so instabil? Werde mal versuchen mit einer setinterval oder irgend einem delay, dass diese Zeilen nur ab und zu aufgerufen werden...
Zitat:
preloader.percent.text = Math.round((bytesLoaded/bytesTotal)*100)+"%";
preloader.bar._xscale = 4.4*Math.round((bytesLoaded/bytesTotal)*100);
wommi ist offline   Mit Zitat antworten
Alt 29-01-2011, 18:52   #10 (permalink)
Alter User
 
Benutzerbild von wommi
 
Registriert seit: Mar 2005
Ort: Ex Exil-Leipziger
Beiträge: 325
...ja das ist die Lösung!!! Ich trixe den timeout aus, der warscheinlich diesen Fehler auslöst - mit einem unsauberen kleinen Hack! ;D

Also falls der Fehler bei euch auftreten sollte... Legt in den Preloader ein Movieclip mit einem Skript rein, das immer einer Variablen (in meinem Fall "mytimer") abwechselnd so nach ca 10 Frames einen Wert 1 und dann wieder einen Wert 0 zuweist... Das ganze läuft als loop.

Dann triggert ihr im onProgress die Preloader-Skript-Animation so, dass die Animation nur wenn der Wert der Variablen 1 entspricht, ausgelöst wird...

Das Hilft im Moment den Fehler zu beheben...

PHP-Code:
   if(bytesTotal && preloader.mytimer.mytimer==1){ 
  
preloader.percent.text Math.round((bytesLoaded/bytesTotal)*100)+"%";
  
preloader.bar._xscale 4.4*Math.round((bytesLoaded/bytesTotal)*100);
   } 
Dirty but effective!
wommi ist offline   Mit Zitat antworten
Alt 29-01-2011, 23:02   #11 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
OK. Noch einen Zusatz, ein Ding mit setInterval
PHP-Code:
//
fscommand("fullscreen""false");
fscommand("allowscale""true");
fscommand("showmenu""false");
_quality "BEST";
//
this.createEmptyMovieClip("container",this.getNextHighestDepth());
var 
mclListener:Object = new Object();
var 
container1:MovieClipLoader = new MovieClipLoader();
//
preloader._visible false;
preloader.bar._xscale 0;
//
mclListener.onLoadInit = function(target:MovieClip) {
    
trace('initialized');
};
//
mclListener.onLoadStart = function(target:MovieClip) {
    
preloader._visible true;
    
trace('started');
};
//
var interval:Object = new Object();
interval.id setInterval(checkProgress30container1containerinterval);
function 
checkProgress(mcLoader:MovieClipLoaderimage:MovieClipinterval:Object):Void {
    var 
progress:Object mcLoader.getProgress(image);
    
preloader.percent.text Math.round((progress.bytesLoaded progress.bytesTotal) * 100) + "%";
    
preloader.bar._xscale 4.4 Math.round((progress.bytesLoaded progress.bytesTotal) * 100);
    if (
progress.bytesLoaded == progress.bytesTotal) {
        
clearInterval(interval.id);
    }
}
//
mclListener.onLoadComplete = function(target:MovieClip) {
    
trace("loaded +=" target);
    
target._lockroot true;
    
target.gotoAndStop("start");
};
//
mclListener.onLoadError = function(container:MovieCliperrorCode:String) {
    
trace('not loaded');
};
//
container1.addListener(mclListener);
container1.loadClip("tester1.swf",container); 
Wenn des jetzt auch nicht funzt, dann weiß ich auch nimmer ;-)
__________________
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
Antwort

Lesezeichen

Stichworte
as2, flash, preloader

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Pfad-Problem mit Flash-Container kuazo Flash Einsteiger 6 28-08-2006 15:40
Container Problem in einem Container Marc Jech Flash MX 1 03-08-2006 08:30
preload externes swf in container Baxx Flash MX 2004 3 02-09-2005 11:56
preload problem Zeus23 Flash MX 15 30-04-2003 19:35
kl. preload problem dr.pug Flash 4 und Flash 5 4 14-05-2002 09:15


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele