PDA

Просмотр полной версии : Сброс таймера


kurdyumoff
28.04.2010, 00:18
Доброе время суток. Сначала опишу процесс, затем озвучу проблему. Есть игра, гонки по кругу, пользователь может задавать количество кругов. Существует два таймера, таймер общего времени игры, и таймер лучшего круга. В общем, начинаем игру, задаем, допустим, 5 кругов. Начинаем ехать, общий таймер начинает считать, заканчиваем 1-й круг, и допустим таймер лучшего круга принимает значение 2 минуты, едем второй круг и проезжаем его, допустим, за 1 минуту 30 секунд, т.е таймер лучшего круга принимает значение 1:30, дальше проезжаем остальные 3 круга и результат за каждый из них хуже чем 1:30, т.е в итоге в конце гонки получаем значение в таймере общего времени, допустим 9:30, а в тамере лучшего круга - 1:30. По окончанию игры жмем кнопочку "Начать сначала". Опять та же процедура задаем кол-во кргуов и едем. Т.е по идее мы начали новую игру и все таймеры должны сброситься. И так проезжаем первый круг за 1:40 и видим в таймере лучшего круга занчение 1:30, т.е значение с прошлой игры, т.е таймер не сбрасывается( Как сделать так чтобы таймер сбрасыался либо при нажатии на кнопку либо при переходе на какой либо кадр? Кусок кода:
stop();
initialTime = getTimer();
lapTime = initialTime;

function setTimes() {
timeElapsed = getTimer()-_root.initialTime;
milliseconds = timeElapsed;
seconds = Math.floor(milliseconds/1000);
minutes = Math.floor(seconds/60);
minutesTXT = minutes;
secondsTXT = seconds-minutes*60;
tensTXT = Math.round((milliseconds-seconds*1000)/10);
if (minutesTXT<10) {
minutesTXT = "0"+minutesTXT;
}
if (secondsTXT<10) {
secondsTXT = "0"+secondsTXT;
}
if (tensTXT<10) {
tensTXT = "0"+tensTXT;
}
_root.totalTimeTXT = minutesTXT+"."+secondsTXT+"."+tensTXT;
}
function setBestLap() {
bestTime = getTimer()-_root.lapTime;
milliseconds = bestTime;
if (oldMilliseconds>milliseconds || oldMilliseconds == null) {
oldMilliseconds = milliseconds;
seconds = Math.floor(milliseconds/1000);
minutes = Math.floor(seconds/60);
minutesTXT = minutes;
secondsTXT = seconds-minutes*60;
tensTXT = Math.round((milliseconds-seconds*1000)/10);
if (minutesTXT<10) {
minutesTXT = "0"+minutesTXT;
}
if (secondsTXT<10) {
secondsTXT = "0"+secondsTXT;
}
if (tensTXT<10) {
tensTXT = "0"+tensTXT;
}
_root.bestLapTXT = minutesTXT+"."+secondsTXT+"."+tensTXT;
}
_root.lapTime = getTimer();
}

Psycho Tiger
28.04.2010, 00:21
Ну например сделать время лучшего круга очень большим числом, чтобы любое новое время круга было лучшим.

kurdyumoff
28.04.2010, 01:23
Дык проблема состоит в том что, когда первый раз проезжаешь он запоминает время круга, а когда запускаешь заново, он запоминает только меньшее, чем в предыдущей игре, а игра ведь уже как бы новая и надо чтоб он запоминал и большое(в случае если это первый круг)

AzagThoth
28.04.2010, 06:54
Опишите обработчик кнопки Старт(той самой которой заново запускаете)
Например:
but.onPress=function():Void{
oldMilliseconds = null;
}

kurdyumoff
28.04.2010, 13:15
Нет, не помогло(

Добавлено через 1 час 55 минут
Ну разве нет никакой функции, чтобы просто переводила счетчики в исходное положение, т.е. на ноль?

Tails
28.04.2010, 23:24
Во время старта второй игры, запомни текущее положение таймера, а патом тупо вычитай это значение, аналогично и для 3,4,5 ...n игр.

kurdyumoff
29.04.2010, 00:02
Tails, непонял(((( можешь хотя бы примерно скриптом набросать

Tails
29.04.2010, 00:23
Во время старта игры, Когда машинки паехали, в отдельную переменную сохроняеш текущее значение таймера, когда машинка проедет круг, то из текущего значения таймера, вычитаеш ту сохранённую переменную, и воаля, получаеш значение круга.

time-допустим это бесконечный таймер без остановки.
Во время старта гонки, в отдельную переменную заносиш значение таймера:
TimeStart=time;;
В конце гонки, чтобы узнать время круга:
TimeLap=time-TimeStart;
готовым кодом помочь немогу :)

kurdyumoff
29.04.2010, 00:49
Спасибо, попробую