Preloader Problem :/

NetPerformance

Erfahrenes Mitglied
Habe hier was ganz einfaches geschrieben.
Würde gerne wissen warum das Ganze nicht funktioniert..

a. in Frame 1 steht stop();
b. in Frame 1 ist ein dynamisches Textfeld (percent als var name)
c. Frame 1 ist ein MovieClip mit dem unten aufgeführten Script.

a,b und c habe ich in unterschiedliche layer eingefügt.

in Frame 4 ist der MovieClip, der abgespielt werden soll.
in Frame 4 steht auch ein stop();

Code:
onClipEvent(load)
{
	_root.gesamt = _root.getBytesTotal();
}

onClipEvent(enterFrame)
{
	_root.geladen = _root.getBytesLoaded();
	percent = int(geladen/gesamt*100)+" %";
	
	if (percent >= gesamt) 
	{
		_root.gotoAndStop(4);
	}
}

Thx..
Aaron
 
Hi,

1. die Variablen gesamt und geladen sind auf _root definiert. Du versuchst allerdings der Variable percent, die dem MC-Objekt zugeordnet ist, einen Wert aus gesamt und geladen ohne das _root zuzuweisen. Lass das _root weg, oder definiere percent auch auf root.

2. mit dem Zusatz "%" wird percent in einen String umgewandelt. Ich bezweifle, dass dann ein Größenvergleich mit "gesamt" noch wie gewünscht funktioniert, hier vergleichst Du z.B. "75%" mit 4000 (bytes). Außerdem enthält "gesamt" keine Prozentangabe; wenn Dein Clip größer als 100 Bytes ist, wird percent nie diesen Wert erreichen. Richtiger wäre:
PHP:
onClipEvent(enterFrame)
onClipEvent(load)
{
    gesamt = _root.getBytesTotal();
}
{
    geladen = _root.getBytesLoaded();
    percent = int(geladen/gesamt*100);
    _root.percentStr = percent + "%"; // für das Textfeld
	
    if (percent >= 100) // da ja ein Prozentualer Vergleich vorliegt
    {
        _root.gotoAndStop(4);
    }
}
Außerdem meine ich mich zu erinnern, dass eine onEnterFrame-Methode nicht im Zusammenhang mit Preloadern arbeitet... der Handler wird m.E. erst aufgerufen, wenn alle Frames geladen sind. Sollte es also auch nach diesen Änderungen noch nicht funktionieren, so nimm den "onEnterFrame" heraus und erstelle einen konventionellen 2-Frame-Preloader.

Gruß
 
mmh.. bin wohl zu blöd dafür :/

habe das ganze mal hochgeladen ..

szene 1 == preloader ;
szene 2 == movie;

Preloader bleibt in Szene 1 hängen !

download

Thx
Aaron *derlangsamamverzweifelnist*
 
Hi,

folgendermaßen funktioniert es:
PHP:
onClipEvent (load) {
    gesamt = _root.getBytesTotal();
    percent=0;
}

onClipEvent (enterFrame) {
    if (percent<100) {
        geladen = _root.getBytesLoaded();
        percent = int(geladen/gesamt*100); 
        _root.percentStr=percent+"%"; // percentStr ist die Variable des Textfeldes
        if (percent>=100) {
            _root.gotoAndStop(2); // hier MUSS _root hin, sonst bezieht es sich auf den MC 
        }
    }
}
Zumindest in MX2004 werden die Frames aller Szenen aneinandergereiht, so dass "gotoAndStop(2)" in diesem Fall "gotoAndStop("Szene 2",1) entspricht. Der Sprungbefehl mit Szenenbezeichner hat bei mir auf Anhieb nicht geklappt, und ich hatte auch keinen Nerv das zu debuggen ;) Nimm lieber Bildbezeichner, damit kannst Du auch beliebige Szenen anspringen.

Gruß
 
Zurück