Objekt verschieben mit Stopuhr

Hallo,

ich habe ein Problemchen. Ich möchte gerne einen Timer basteln, welcher auf der x-Achse einen Block verschiebt das klappt auch alles, nur auf langsamen Rechner wird der Sekunden-Tackt vielleicht nicht stimmen bzw. bei grosser Anzahl an Millisekunden passt die x-Achsen verschiebung nicht mehr. Im Anhang befindet sich die FLA.

Hier der AS-Code:
PHP:
_global.testzeit = 10000;
var gegen = (60.1/(_global.testzeit/50));
trace(gegen);
uhr.block.onEnterFrame = function() {
	var laufzeit = getTimer()-_global.testzeit;
	millisekunden = laufzeit%1000;
	sekundengesamt = (laufzeit-millisekunden)/1000;
	sekunden = sekundengesamt%60;
	minuten = (sekundengesamt-sekunden)/60;
	millisekunden = Math.round(millisekunden/10);
	if (sekunden<10) {
		sekunden = "0"+sekunden;
	}
	if (minuten<10) {
		minuten = "0"+minuten;
	}
	if ((minuten == 00) && (sekunden == 00)) {
		delete uhr.block.onEnterFrame;
	}
	_root.uhr.block._x -= gegen;
	_root.zeit.text = minuten+":"+sekunden+":"+millisekunden;
};

Danke

cu
 

Anhänge

Hi,

verschieb das Ding nicht einfach um einen bestimmten Betrag, sondern rechne die aktuelle Position anhand des Verhältnisses aus Start- und Endzeit aus - dann spielen sowohl Framerate als auch die Laufzeit keine Rolle:
Code:
_global.testzeit = 4000;
var gegen = (60.1 / (_global.testzeit / 50));
var dx = uhr.block._width; // Startposition des Blockes
var stime = getTimer(); // Startzeit merken für langsame fps

uhr.block.onEnterFrame = function() {
	var laufzeit = -(getTimer() - stime - _global.testzeit); // Laufzeit positiv
	millisekunden = laufzeit % 1000;
	sekundengesamt = (laufzeit - millisekunden) / 1000;
	sekunden = sekundengesamt % 60;
	minuten = (sekundengesamt - sekunden) / 60;
	millisekunden = Math.round(millisekunden / 10);
	if (sekunden < 10) {
		sekunden = "0" + sekunden;
	}
	if (minuten < 10) {
		minuten = "0"  +minuten;
	}
	if (millisekunden < 10) { // Millisekunden auf zwei Stellen formatieren:
		millisekunden = "0"  +millisekunden;
	} else if (millisekunden > 10) {
		millisekunden = millisekunden.toString().substr(0, 2);
	}
	if (laufzeit <= 0) { // laufzeit als "Stopper" verwenden
	minuten = sekunden = millisekunden = "00"; // Uhr "nullen"
		delete uhr.block.onEnterFrame;
	}
	var f = laufzeit / testzeit; // Verschiebungsfaktor
	uhr.block._x = -dx + (f) * dx; // Verschiebung
	_root.zeit.text = minuten + ":" + sekunden + ":" + millisekunden;
}

Gruß
.
 
Zurück