NaN Problem? MX2004

EM-Autotechnik

Erfahrenes Mitglied
Ich habe ein kleines Problem mit meinem Preloader der ein externen Movie in
nen "Conatiner" laden soll usw.. alles prima zumindest wenn ich mein Filmchen testen will. Sobald ich aber die einzelnen .swf´s aufn server lade, kommt es zuerst zu einem "NaN" Fehler im Textfeld "anzeige" und geht dann auf "preloading data..0%" . Kann mir jemand nen Rat geben

Hier is noch mein Script:

PHP:
stop();


this.createEmptyMovieClip("container", this);
container._y = 2000;
loadMovie("animation.swf", "container");


this.onEnterFrame = function() {
	geladen = _root.container.getBytesLoaded();
	gesamt = _root.container.getBytesTotal();
	prozent = Math.round((geladen/gesamt)*100);
	anzeige = "preloading data... "+prozent+" %";
	ladebalken._xscale = prozent;
	if (prozent == "100") {
		removeMovieClip("container");
		loadMovieNum("animation.swf",5);
		gotoAndPlay("pause");
	}
}


danke!
 
Das liegt daran, dass es - vor allem eben auf dem Server - eine kurze Zeit dauert, bis die zu ladende Datenmenge bekannt ist (getBytesTotal). Bis dahin teilst du durch 0, was bekanntlich mathematisch nicht möglich ist, und deshalb NaN (Not a Number) ergibt.

Am besten du grenzt die Anzeige mit eine if-Bedingung ein, die erst dann etwas ausgibt, wenn der Wert von prozent >=0 ist.

Gruß
Rena
 
Danke für deine schnelle Antwort Rena :)

Ich habe jetzt mal ne if abfrage geschrieben und den an verschiedenen Stellen eingesetzt und getestet . Geht leider immer noch net.

Hier nocheinmal mein Script:
PHP:
stop();
this.createEmptyMovieClip("container", this);
container._y = 2000;
loadMovie("animation.swf", _root.container);


this.onEnterFrame = function() {
	prozent = Math.round((geladen/gesamt)*100);
	if (prozent >=0) {
	geladen = _root.container.getBytesLoaded();
	gesamt = _root.container.getBytesTotal();
	anzeige = "preloading data... "+prozent+" %";
	ladebalken._xscale = prozent;
}

if (prozent == 100) {
		removeMovieClip("container");
		loadMovieNum("animation.swf",5);
		gotoAndStop("pause");
	}
}
 
so hab das jetzt mal anders geschrieben..

beim testen der .SWF auf meinem PC wird der Movie "animation.swf" geladen
und spielt auch ab.

Der Hauptfilm wo der Script liegt springt aber nicht auf den Frame "pause".

wenn ich die Movies aufn Server lade bleibt er auch an der selben Stelle hängen
und lädt den Movie "animation.swf" erst garnet, bzw wird nicht abgespielt.
PHP:
stop();
var container = this.createEmptyMovieClip("loader", 2);
container._visible = false;
loadMovie("animation.swf", _root.container);
container.onEnterFrame = function() {
	var geladen = container.getBytesLoaded();
	var gesamt = container.getBytesTotal();
	if (geladen == 100) {
		var prozent = Math.round(geladen*100/total);
	} else {
		var prozent = 0;
	}
	anzeige = "preloading data... "+prozent+" %";
	ladebalken._xscale = prozent;
}
if (prozent>=99) {
	container._visible = true;
	_root.anzeige._visible = false;
	_root.bag._visible = false;
	_root.rahmen._visible = false;
	_root.ladebalken._visible = false;
	delete this.onEnterFrame;
	_root.gotoAndStop("pause");
}
 
nochmal umgeschrieben jetzt geht er aufn frame "pause" , lädt die externe swf "animation" aber nur beim testen der swf auf meinem PC und nich aufm Server.

Hat die laderheinfolge unter veröffentlichen auch was mit der leseRheinfolge vom Script zu tun

THX


PHP:
stop();
this.createEmptyMovieClip("conatiner", 2);
container._visible = false;
conatiner.loadMovie("animation.swf", 3);
container.onEnterFrame = function() {
	geladen = container.getBytesLoaded();
	gesamt = container.getBytesTotal();
	if (geladen == 100) {
		prozent = Math.round(geladen*100/total);
	} else {
		prozent<100;
	}
	anzeige = "preloading data... "+prozent+" %";
	ladebalken._xscale = prozent;
};
if (prozent>=99) {
	container._visible = true;
	_root.anzeige._visible = false;
	_root.bag._visible = false;
	_root.rahmen._visible = false;
	_root.ladebalken._visible = false;
	delete this.onEnterFrame;
	_root.gotoAndStop("pause");
}
 
Hi -

1. <0 und <=0 sind keinesfalls dasselbe, nicht mal das gleiche
2. du hast Schreibfehler in deinem script ( container, conatiner ...)
3. Die Ladereihenfolge definiert sehr wohl die Ausführungsreihenfolge deiner
Scripte.
4. Was zur Hölle willst du mit
PHP:
} else {
        prozent<100;
    }
sagen ?
5. Überhaupt : Übersetze dir doch einmal dein Script in reines Deutsch im Stile
von Wenn.....dann - du wirst sehen.....das kann so nicht klappen...

Grüsse
B.
 
zu 1. Rena schreibt ">=0", was ist jetzt richtig?
2. danke
3. stand bei mir auf "aufwärts" kein wunder..
4. das frage ich mich jetzt auch
5. hatte ne 4 in Deutsch :rolleyes: ..also stimmt der Script
in meinem zweiten Post auch nicht (abgesehen von der If abfrage)?
---
 
Hi -

1. Auch Rena kann mal einen Flüchtigkeitsfehler machen.
2. :)
3. :)
4. :-(
5. :offtopic:
zu deinem 2. Script:

' conatiner.loadMovie("animation.swf", 3);'

das ist erstens Flash 4/5 Syntax, also in diesem Script eigentlich anachronistisch, und zweitens ist es nicht nur unseriös, sondern schlicht falsch erst einen MC auf Tiefenstufe 2 zu erzeugen, und dann in diesen aber auf TIefenstufe 3 etwas hineinzuladen .....
Schau dir einmal folgendes Script an: es hat zwar einen leicht anderen Zweck aber schon dieselbe Stossrichtung ...> die if Abfrage überprüft hier keinen Wert sondern die Existenz, mit anderen Worten die != ( Ungleichheit ) der Variable zu ' undefined ' :

PHP:
var controller = this.createEmptyMovieClip ("promotor2", 1);
controller.onEnterFrame = function () {
	var geladen = _root.printer.DB_QUERY.getBytesLoaded ();
	var total = _root.printer.DB_QUERY.getBytesTotal ();
	if (geladen && total) {
		var ready = Math.round (geladen * 100 / total);
	}
	else {
		var ready = 0;
	}
	_root.preloader.prozentanzeige = "Lade..." + ready + "%";
	_root.preloader.kbanzeige = Math.round (ready / 1024) + " kB von " +  Math.round (total / 1024) + " kB";
	_root.preloader.ladebalken._xscale = ready;
	if (ready == 100) {
		delete this.onEnterFrame;
                this.removeMovieClip();
	}
};
 

Neue Beiträge

Zurück