Fehlermeldung vom Flashplayer

Rollo

Erfahrenes Mitglied
Hallo.
"Flash Player wird durch ein Skript in diesem Film verlangsamt..."

Mit dieser Fehlermeldung habe ich derzeit zu kämpfen. Das kurriose daran ist, dass sie nicht immer erscheint, sondern nur dann wenn der Film bereits im Cache vorhanden ist. Das heist wenn ich den Film das erste mal betrachte funktioniert alles super, aber bei den nächsten paar mal meistens nicht mehr. So bisher meine Beobachtung.

Es passiert immer dann wenn meine Navigationsbutton automatisch (so viele Seiten (Frames) wie vorhanden sind) geladen werden. Wenn ich auf Skriptabbruch drücke kommt bei den Button auch ein visueller Fehler, denn es werden plötzlich unendlich viele angezeigt. Das klingt nach Endlosschleife. Soweit bin ich auch schon gekommen, nur den Fehler habe ich noch nicht entdecken können, da ich sogar die onEnterFrame Funktion nach dem Laden lösche.

Ich komm nach tagelangem googlen und selbst Ausprobieren so langsam zur Verzweiflung. Evtl. habt ihr ja eine Idee wie ich den Fehler beheben kann.

Hier erstmal der Code, in dem ich den Fehler vermute.
PHP:
ifFrameLoaded(3){
	this.gs = 0;
	_root.monitor.da(this);
	gotoAndPlay(3);
	_root.monitor.player_mc.content.gotoAndStop(2);
}

for (var i=1; i<=_totalframes; i++) {
    _root.monitor.navi["button" + i]._visible = false;
}

this.onEnterFrame = function() {
    var anzahl = _framesloaded - 2;
    for (var i=1; i<=anzahl; i++) {
		_root.monitor.da(this);
		this.gs = i;
        _root.monitor.navi["button" + i]._visible = true;
    }
    if (_framesloaded == _totalframes) delete this.onEnterFrame;
}

Über Hilfe freu ich mich.
 
Hallo,

dein Problem entsteht bei dieser Stelle des Skripts:

Code:
var anzahl = _framesloaded - 2;
    for (var i=1; i<=anzahl; i++) {
        _root.monitor.da(this);
        this.gs = i;
        _root.monitor.navi["button" + i]._visible = true;
    }

Wenn nämlich die swf das erste Mal aus den unendlichen Weiten des Internets geladen wird, beträgt die Anzahl geladener Frames beim Ausführen dieses Skripts mit hoher Wahrscheinlichkeit weniger als 3, d.h. _framesloaded - 2 gibt eine Zahl zurück, die kleiner ist als 1 und schon hast du deine Endlosschlaufe. Wenn sich die Datei im Cache befindet, sind die Frames natürlich schon geladen, deshalb tritt der Fehler beim zweiten Aufruf des Skripts nicht mehr auf.

Du könntest die for-Schlaufe erst aufrufen, wenn "anzahl" grösser als 0 ist:
Code:
this.onEnterFrame = function() {
	var anzahl = _framesloaded-2;
	if (anzahl>0) {
		for (var i = 1; i<=anzahl; i++) {
			_root.monitor.da(this);
			this.gs = i;
			_root.monitor.navi["button"+i]._visible = true;
		}
		if (_framesloaded == _totalframes) {
			delete this.onEnterFrame;
		}
	}
};


gruss
 
Nein der Fehler bleibt bestehen. :( Also es ist immernoch wie vorher. Beim erstenmal funktioniert es undbei den nächsten mal nicht mehr. Dennoch danke für die schnelle Hilfe.
 
Hi,

lass Dir mal _framesloaded und _totalframes in einem Textfeld ausgeben. Ändert sich dort etwas, wenn die Datei im Cache liegt?

Zudem kann ich Dir empfehlen, auf das (veraltete) Konstrukt "ifFrameLoaded" zu verzichten; teste lieber _framesloaded auf >= 3.

Was passiert in Frame 3, zu dem Du springst? Wenn die Datei im Cache ist, wird ja anscheinend direkt dorthin gesprungen, ohne dass der weitere Code in Frame 1 ausgeführt wird ...

Gruß
.
 
Hallo,

das Problem liegt aber schon bei dieser for-Schlaufe. Probier statt deiner onEnterFrame-Funktion mal folgendes:

Code:
var anzahl;
var i = 1;
onEnterFrame = function () {
	anzahl = _framesloaded;
	while (i<anzahl) {
		_root.monitor.da(this);
		this.gs = i;
		_root.monitor.navi["button"+i]._visible = true;
                i++;
	}
        if (_framesloaded == _totalframes) delete onEnterFrame;
};

gruss
 
Zuletzt bearbeitet:
Danke.
Sobald ich zu Haus bin probier ich weiter. Also ich meld mich dann was so weiter passiert ist. Übrigens: Im IE scheint es zu funktionieren. Nur im Firefox kommt noch die Fehlermeldung. Zumindest ging es im IE jetzt öfters zu öffnen. Habe es anschließend nochmal im Firefox probiert, aber siehe da Fehler.

Bis nachher Gruß Rollo
 
Hallo und Guten Morgen.
So Gestern habe ich es nicht mehr geschafft, also neuer Tag neue Kraft dem Fehler entgegen zutreten. Ich habe es nun mal mit der while Geschcihte probiert, aber es kommt dabei das selbe raus.

Ich habe das mit dem Textfeldern getestet. Wenn die Datei nicht im Cache ist passiert nun folgendes. _framesloaded bleibt im besagten Frame 1 hängen und _totalframes ist 11 (das stimmt soweit). Wenn ich den Film dann erneut lade (sicher aus dem Cache) funktioniert es plötzlich. Dann ist _framesloaded 11 genau so wie _totalframes.

Dann habe ich aus Spaß die Datei immer und immerwieder laden lassen und zwischendurch ist die Fehlermeldung wieder erschienen. Das ist doch aber wirklich merkwürdich. Ich meine entweder man hat einen Fehler gemacht, dann taucht der halt immer auf und man kann ihn beheben oder es müsste funktionieren. Aber das hier wundert mich, mal geht es, mal wieder nicht, ohne das ich etwas am Skript änder.

Gruß Rollo
 
Hallo,

das Skript ändert sich nicht, da hast du natürlich recht, der Ladeprozess hingegen wird von einer Vielzahl von Faktoren beeinflusst, die wir mit AS leider Gottes (oderzum guten Glück?) nicht steuern können. Und dein Skript arbeitet nun mal mit Angaben, die vom Ladeprozess abhängen.

Ich würde dir vorschlagen, Tobis Rat zu befolgen und diesen Ladevorgang zeitgemässer zu triggern. Dazu verwendest du am besten getBytesLoaded() bzw. getBytesTotal(), ebenfalls Eigenschaften jedes MovieClips ergo auch der Hauptzeitleiste. Mehr dazu in deiner Flash-Hilfe.
Du könntest auch mal deine *.fla oder relevante Auszüge posten.

gruss
 
Zurück