MX Preloader mit "mitgehender" Prozentzahl

guzel

Grünschnabel
moin allerseits,

habe mal wieder eine Frage, die sich diesmal um das uralte Thema "Preloader" dreht. Nur kann ich leider in diesem Board, noch in anderen etwas Hilfreiches finden :( ich hoffe, hier wird mir geholfen, bei all den Flashgurus :)
Ich möchte also einen Preloader in MX machen, welcher meinen Mainfilm lädt, und eventuell auch (gerne) meine externen clips. So weit, so gut, alles noch einfach, aber was mir momentan Probleme bereitet, ist folgendes: der Preloader soll einen Balken als Statusanzeige haben und auch eine Prozentanzeige, die allerdings nich in der Mitte des Balkens rumsteht oder nebenan, sie soll mit dem Balken (synchron) zusammen von links nach rechts laufen, und wie das geht, das weiss ich eben nich :rolleyes:

wäre echt toll, wenn mir einer von Euch etwas dazu sagen kann

mfg
guzel
 
Zuletzt bearbeitet:
Vielleicht kannst du dein bisheriges Preloaderscript hier posten, dann kann man genauer sagen wo du die entsprechende Zeile einfügen mußt.

Generell:
Das Textfeld in einen Movieclip konvertieren und dessen Position anhand der errechneten Prozentzahl setzen oder anhand der Balkenbreite oder oder oder - z.B. mit
PHP:
prozentmc._x=ausgangsposition + balken._width;
.... oder so ähnlich. Konkret geht's aber nur auf Basis deines Preloaderscripts.

Gruß
Rena
 
was für ein super Zufall ! :)
ich habe nämlich den Preloader von Dir genommen, den ich in den Tuts gefunden habe :

lade_1.onPress = function() {
ladeziel.loadMovie("about.swf");
ladestatus();
};
lade_2.onPress = function() {
ladeziel.loadMovie("servico.swf");
ladestatus();
};
lade_3.onPress = function() {
ladeziel.loadMovie("lojas.swf");
ladestatus();
};
lade_4.onPress = function() {
ladeziel.loadMovie("novidades.swf");
ladestatus();
};
lade_5.onPress = function() {
ladeziel.loadMovie("contato.swf");
ladestatus();
};

loader._visible = false;

ladestatus = function () {
loader.onEnterFrame = function() {
geladen = _root.ladeziel.getBytesLoaded();
if (geladen>=10) {
loader._visible = true;
prozent = Math.round(geladen/zuladen*100);
this.prozentanzeige.text = prozent+"%";
this.balken._xscale = prozent;
if (prozent>=100) {
delete this.onEnterFrame;
this._visible = false;
}
}
};
};
//-------------------------------------------------

ich denke, dass Du damit etwas anfangen kannst ;)

p.s.: einen riesen Dank schonmal für die schnelle Antwort :)

mfg
guzel
 
Zuletzt bearbeitet:
ach ja, noch eine Frage dazu:
ist es möglich, diesen Preloader auch für verschiedene Objekte GLEICHZEITIG nutzen zu können? also ich habe 2 MCs, welche beide Container sind, um 2 verschiedene Menüs zu laden (i.e.:linker MC stellt Haupt-submenu dar, rechter MC eine kleine Erklärung, Info dazu)
ich kriege es einfach nicht hin, den Loader auch für die rechte Seite zu benutzen, er stellt immer den Ladebalken voll dar (also nicht unsichtbar) und arbeitet auch nicht mit ihm, und einen Preloader in den jeweiligen swf bauen möchte ich nicht, da dass nicht so recht funzen will, der Preloader geht erst sehr spät los...liegt wohl an dem TextScrollPane denk ich :(
hüüllffää :(
 
Zuletzt bearbeitet:
Du hast da 'ne Zeile vergessen
PHP:
geladen = _root.ladeziel.getBytesLoaded();
zuladen = _root.ladeziel.getBytesTotal();  //<--- die hier
kann aber ein Copy&Paste-Fehler sein. :)

Zur ersten Frage:
Konvertiere das Textfeld für die Prozentanzeige in einen eigenen Movieclip und gib ihm den Instanznamen "prozent_mc". Folgendes ist nun zu ändern .. alles ungetestet
PHP:
...
loader.anzeigestart=loader.prozent_mc._x//<-- ergänzen um die Startposition in eine Variable zu schreiben
loader._visible = false;

ladestatus = function () {
loader.onEnterFrame = function() {
geladen = _root.ladeziel.getBytesLoaded();
zuladen = _root.ladeziel.getBytesTotal();
if (geladen>=10) {
loader._visible = true;
prozent = Math.round(geladen/zuladen*100);
this.prozent_mc.prozentanzeige.text = prozent+"%";//<-- geänderter Pfad da das Textfeld jetzt IM Movieclip "prozent_mc" liegt
this.balken._xscale = prozent;
this.prozent_mc._x=this.anzeigestart+this.balken._width;//<--prozent_mc um die aktuelle Balkenbreite von seiner Startposition wegrücken
if (prozent>=100) { 
...

Zur zweiten Frage: Du kannst die geladenen Bytes von zwei externen Swfs in zusammenzählen z.B. mit
PHP:
geladen = _root.ladeziel.getBytesLoaded()+_root.andererContainer.getBytesLoaded();
zuladen = _root.ladeziel.getBytesTotal()+_root.andererContainer.getBytesTotal();
Auch ungetestet gerade ... aber im Ansatz solte das so funktionieren. Ggf halt Pfade anpassen etc.

Mit der Verzögerung hast recht - das wird an der Komponente liegen die standardmäßig in/vor den ersten Frame exportiert wird. Wenn du sie aber eh manuell auf die Bühne liegen hast, kannst das deaktivieren: Rechte Maustaste auf die Komponente in der Bibliothek -> Verknüpfung -> Export in das erste Bild deaktivieren. Nun was soll ich sagen ... ebenfalls ungetestet :p

Gruß
Rena
 
Zuletzt bearbeitet:
Hallo Rena,

danke schon einmal dafür, dass Du dich mit diesem Problem beschäftigst :)

ich habe eben einmal deine Änderungen in das AS eingebaut, die Prozentanzeige läuft super (danke schon einmal :) :) :) )
allerdings habe ich immer noch das Problem mit dem Laden für den 2. Container :(
Muss ich den "Loader" (Balken + prozent_mc) auch auf die Bühne legen? Ich habe das probiert, jedoch ist er sichtbar und liegt da einfach so rum, ohne sich zu zu beteiligen...
Ich füge nochmal mein Script ein, wäre sehr nett von Dir, wenn Du dir das noch einmal anschauen könntest, eventuell hab ich einen Fehler eingebaut ? Ich hoffe, dass ich nicht allzusehr deine Freizeit beanspruche ;)

hier noch einmal mein Script:

PHP:
lade_1.onPress = function() {
	ladeziel.loadMovie("about.swf");
	targetmc2.loadMovie("aboutinfo.swf");
	ladestatus();
};
lade_2.onPress = function() {
	ladeziel.loadMovie("servico.swf");
	targetmc2.loadMovie("servicoinfo.swf");
	ladestatus();
};
lade_3.onPress = function() {
	ladeziel.loadMovie("lojas.swf");
	ladestatus();
};
lade_4.onPress = function() {
	ladeziel.loadMovie("novidades.swf");
	ladestatus();
};
lade_5.onPress = function() {
	ladeziel.loadMovie("contato.swf");
	ladestatus();
};

loader.anzeigestart=loader.prozent_mc._x
loader._visible = false;

ladestatus = function () {
	loader.onEnterFrame = function() {
		geladen = _root.ladeziel.getBytesLoaded()+_root.targetmc2.getBytesLoaded();
		zuladen = _root.ladeziel.getBytesTotal()+_root.targetmc2.getBytesTotal();
		if (geladen>=10) {
			loader._visible = true;
			prozent = Math.round(geladen/zuladen*100);
			this.prozent_mc.prozentanzeige.text = prozent+"%";
			this.balken._xscale = prozent;
			this.prozent_mc._x=this.anzeigestart+this.balken._width;
			if (prozent>=100) {
				delete this.onEnterFrame;
				this._visible = false;
			}
		}
	};
};

Vielen Dank schonmal liebe Rena :)
 
Zuletzt bearbeitet:
So ins Blaue hinein:
Mit der Funktion "ladestatus" überprüfst du ja nun _immer_ beide Container-MCs. Wird nur einer "neu befüllt" und der andere ist schon von einem früheren Ladevorgang fertig geladen so ist die Bedingung für das Sichtbarwerden (geladen >=10) ja in der Regel schon erfüllt, wenn der Inhalt des zweiten Movieclips größer ist ... wovon man ja ausgehen kann.

Wie wär's zwei Funktionen mit fast demselben Inhalt zu schreiben? Eine wird aufgerufen wenn nur ein MC neu beladen wird (und da wird auch nix zusammengezählt) und bei mehreren die andere. Nur so ein Ansatz ... probiers mal aus.

Gruß
Rena

PS: Wieso packst du z.B. die servico.swf und die servicoinfo.swf nicht in eine Datei wenn sie eh zusammen geladen werden? Dann würde sich das ganze Problem von selbst erledigen ...
 
Zuletzt bearbeitet:
hmmm...auf die Idee bin ich noch gar nicht gekommen...lol...so simplel und doch tiefgehend...werde das gleich mal umbauen...
danke für den Tip Rena :)

gut nacht
 
helft mir bitte.

ich hab einen preloader gebastelt der die prozentzahl wie sowohl auch einen ladebalken enthalten soll.
die prozente gehen das ist kein problem aber der ladebalken bewegt sich keinen milimeter. ich habe schon 100 möglichkieten und posts ausprobiert aber keins geht..

hier mein bisheriger text:

bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add " %";
ladebalken._xscale = prozent;
if (prozent == "100 %") {
gotoAndPlay(3);
}


wär toll wenn ihr mir helfen könntet.

und ja ich weiss der balken muss ein mc das weiss ich schon :)
 
Hi und willkommen im Forum,

Bitte versuche in Zukunft, keine uralten Threads wiederzubeleben, sondern erstelle lieber einen neuen, wenn Du nichts aktuelles findest.

Beachte bitte auch unsere Netiquette in Bezug auf Groß- und Kleinschreibung.

Zu Deinem Problem: Kann es sein, dass Dein Ladebalken nicht den Instanznamen "ladebalken" hat?

Ansonsten: ich nehme an, dieser Code stehe in Frame 1 und in Frame 2 steht ein einfaches "gotoAndPlay(1)"?

Gruß
.
 
Zurück