eigentlich eher matheproblem....

antiheld2000

New member
also, ich muss euch zu meiner schande gestehen, dass ich die absolute meganiete in mathe bin. und deswegen werdet ihr jetzt vielleicht lachen, aber ich kann keine prozentrechnung und selber rechnungwege erschliessen schon gar nicht.
aber ich muss grade mal wieder was ausrechnen... ergo brauch ich hilfe:
es geht um einen preloader. dieser soll sich von oben nach unten über den ganzen bildschirm aufbauen. im verhältnis zum bereits geladenen, is ja klar.
das ist ein ausschnitt aus dem script:
PHP:
		geladen_temp = this[mc].getBytesLoaded();
		gesamt_temp = this[mc].getBytesTotal();
		prozent_temp = (geladen_temp/gesamt_temp)*100;
		mc = createEmptyMovieClip("balken", 1000);
		mc.beginFill(0x000000, 30);
		mc.moveTo(x_achse, y_achse);
		mc.lineTo(Stage.width, y_achse);
		mc.lineTo(Stage.width, y_achse+prozent_temp);
		mc.lineTo(x_achse, y_achse+prozent_temp);
		mc.lineTo(x_achse, y_achse);
		mc.endFill();
bisher "erweitert" sich der balken nur bis zu einer höhe von 100. is logisch, hoffe ich.
nur heck ich grad nicht, wie ich das jetzt wiederum prozentual gesehen auf die gesamthöhe des films beziehe (hätte auch kein problem damit, diese nicht abzufragen, sondern festzuklopfen). hilfe!
 
ok,...

Datengeladen / Dateninsg = Höheanteilig / Maxhöhe

Datengeladen / Dateninsg * Maxhöhe = Höheanteilig

Höheanteilig - Schongefülltehöhe = daswasdazukommt

-> daswasdazukommt = (Datengeladen/Dateninsg * Maxhöhe) - Schongefülltehöhe

Also ist Maxhöhe die Höhe des Films, Dateninsg sind die Daten die insgesamt geladen werden müssen, Datengeladen sind die Daten die schon geladen wurden, Höheanteilig ist das vom Preloader das anzeigt was schon geladen wurde und daswasdazukommt ist der jeweilige "Schritt" (der auch nur 1 px sein könnte) der gemacht wird wenn was neues geladen wurde.

Ich hoffe das ist verständlich (ist n einfacher Dreisatz)
 
Zuletzt bearbeitet:
wenn ich recht in der annahme gehe, dann brauche ich in meinem fall nur die zeile "Datengeladen / Dateninsg * Maxhöhe = Höheanteilig"
da diese ja quasi die während des ladens automatisch die gesamten zwischenschritte von, in meinem fall, 0 bis 375 aufruft. sehe ich das richtig?
 
wenn ich recht mit meiner obigen annahme gehe, warum erzeugt er mir dann beim folgenden script nicht, bei erneutem aufruf der funktion, den gewünschten neuen mc und stellt diesen dar? dies sollte doch durch die variable c, die bei jedem neuaufruf erhöht wird gegeben sein... oder?!
PHP:
function laden(datei, mc, x_achse, y_achse) {
	c++;
	this[mc].loadMovie(datei);
	onEnterFrame = function () {
		geladen_temp = this[mc].getBytesLoaded();
		gesamt_temp = this[mc].getBytesTotal();
		prozent_temp = (geladen_temp/gesamt_temp)*100;
		tofill_temp = (geladen_temp/gesamt_temp) * 375;
		
		mctemp = "balken"+c;
		mc1 = createEmptyMovieClip(mctemp, 1000);
		mc1.beginFill(0xCCCCCC, 30);
		mc1.moveTo(x_achse, y_achse);
		mc1.lineTo(Stage.width, y_achse);
		mc1.lineTo(Stage.width, y_achse+tofill_temp);
		mc1.lineTo(x_achse, y_achse+tofill_temp);
		mc1.lineTo(x_achse, y_achse);
		mc1.endFill();
		if (Math.floor(prozent_temp) == 100 && i) {
			mctemp = eval(_root.mctemp);
			mctemp._alpha -= 25;
			//mctemp.removeMovieClip();
			this[mc]._visible = true;
		} else {
			this[mc]._visible = false;
		}
		i = true;
	};
}
 
keine Ahnung mit Flash kenn ich mich nicht aus :) Also die Zeile stimmt... Und von der Logik sollte es auch gehen. Ich hab aber kein Flash kann es somit auch nicht testen oder ausprobieren.
 
selbst rausgefunden und was gelernt:

in funktionen deklarierte oder initialisierte variablen werden nach abschluss der funktion gelöscht. ergo lag dort der denkfehler und so sieht dann das funktionierende script aus:
PHP:
c = 0;
function laden(datei, mc, x_achse, y_achse) {
	_root.c++;
	this[mc].loadMovie(datei);
	onEnterFrame = function () {
		geladen_temp = this[mc].getBytesLoaded();
		gesamt_temp = this[mc].getBytesTotal();
		prozent_temp = (geladen_temp/gesamt_temp)*100;
		tofill_temp = (geladen_temp/gesamt_temp) * 375;
		
		mctemp = "balken"+_root.c;
		mc1 = createEmptyMovieClip(mctemp, _root.c);
		mc1.beginFill(0xCCCCCC, 30);
		mc1.moveTo(x_achse, y_achse);
		mc1.lineTo(Stage.width, y_achse);
		mc1.lineTo(Stage.width, y_achse+tofill_temp);
		mc1.lineTo(x_achse, y_achse+tofill_temp);
		mc1.lineTo(x_achse, y_achse);
		mc1.endFill();
		if (Math.floor(prozent_temp) == 100 && i) {
			this[mc]._visible = true;
		} else {
			this[mc]._visible = false;
		}
		i = true;
	};
}
 
Zuletzt bearbeitet:
Zurück
Oben