MX 04 Preloader starten und danach Buttonanweisung ausführen


dirkgently

Erfahrenes Mitglied
Hallo.

ich bastele gerade an einem Preloader und nutze dazu ein script, das definiert- was angezeit werden soll, wenn bestimmte button gedrückt werden.

Wenn der Button gedrückt wird, soll dann aber nach dem Laden(!) noch andere sachen passieren (ausblenden des Inhalts)

hier das Script, das ausserhalb des Buttons liegt:


PHP:
//--- Aktionen für die Button_MCs um externe Daten
//--- in den Ziel-MC "ladeziel" zu laden ---------

button_1.onPress = function() {
	// Ladebefehl
	ladeziel.loadMovie("film.swf" , ziel);
	// Aufruf der Funktion für die Preloaderanzeige
	ladestatus();
};
button_2.onPress = function() {
	ladeziel.loadMovie("film2.swf");
	ladestatus();
};
button_3.onPress = function() {
	ladeziel.loadMovie("bild3.jpg");
	ladestatus();
};
//-------------------------------------------------
//--- Ladeanzeige unsichtbar machen ---------------
loader._visible = false;
//-------------------------------------------------
//--- Ladefunktion --------------------------------
ladestatus = function () {
	// Einen onEnterFrame-Event erstellen, so dass nun
	// der Ladezustand kontinuierlich abgefragt und
	// angezeigt wird
	loader.onEnterFrame = function() {
		// Geladene und zu ladenede Bytetes abfragen
		geladen = _root.ladeziel.getBytesLoaded();
		zuladen = _root.ladeziel.getBytesTotal();
		// Sicherheitsabfrage, da ein leerer MC so ungefähr
		// 4 bis 5 Bytes hat und zu Verfälschungen führen könnte
		if (geladen>=10) {
			// Ladeanzeige sichtbar machen
			loader._visible = true;
			// Berechnung der bereits geladenen Prozent
			prozent = Math.round(geladen/zuladen*100);
			// Ausgabe im dynamischen Textfeld "prozentanzeige"
			this.prozentanzeige.text = prozent+" Prozent geladen";
			// Skalierung des Balkens anhand der Prozentzahl
			this.balken._xscale = prozent;
			// Wenn komplett geladen
			if (prozent>=100) {
				// den EnterFrame-Event löschen um Performance zu sparen
				delete this.onEnterFrame;
				// die Ladeanzeige wieder unsichtbar machen
				this._visible = false;
			}
		}
	};
};
//-------------------------------------------------

wie sage ich denn jetzt dem jew. Button, das bestimmte aktionen nach dem laden ausgeführt werden sollen
(ohne beispielsweise das ladescript in jeden button zu kopieren) ?

Vielleicht hat jemand ne einfache Lösung.

Ausserdem:
Hat jemand erfahrungen mit: MovieClipLoader.onLoadStart()
oder
MovieClipLoader.onLoadProgress() ?
scheint ja recht einfach und komfortabel zu funktionieren.
Hat da jemand zufällig ein einfaches Beispiel, ich werde aus den Anweisungen von flash nicht ganz schlau.


Danke und Grüsse
;-)
 

Tobias Menzel

Erfahrenes Mitglied
Hi,

ich weiß zwar nicht genau, was nach dem Laden bei Dir passieren soll, aber ich würde spontan meinen, Du könntest beim Klick auf die Buttons z.B. eine globale Variable setzen:
PHP:
button_2.onPress = function() { 
    _root.afteraction=2;
    ladeziel.loadMovie("film2.swf"); 
    ladestatus(); 
}
Diese Variable kann dann nach dem Laden abgefragt werden:
PHP:
if (prozent>=100) { 
                // den EnterFrame-Event löschen um Performance zu sparen 
                delete this.onEnterFrame; 
                // die Ladeanzeige wieder unsichtbar machen 
                this._visible = false; 
                switch(_root.afteraction) {
                  case 1: dosomething; break;
                  case 2: dosomethingelse; break;
                  case 3: doanotheraction; break;
                }

Mit onLoadStart und onLoadProgress habe ich keine Erfahrung (nutze ich bislang nicht), aber ich werde mal nachschauen:)

Gruß
 

dirkgently

Erfahrenes Mitglied
Danke.

ich hab das jetzt so gemacht, dass das Startbild des geladenen Files so aussieht wie das endbild des "vorhergegangenen" Files.
Dann kann ich ganz easy die "alten" Inhalte ausblenden lassen und die neuen einblenden lassen.
Tricky, was? ;-)
 

Neue Beiträge