Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Сброс таймера (http://www.flasher.ru/forum/showthread.php?t=139310)

kurdyumoff 28.04.2010 00:18

Сброс таймера
 
Доброе время суток. Сначала опишу процесс, затем озвучу проблему. Есть игра, гонки по кругу, пользователь может задавать количество кругов. Существует два таймера, таймер общего времени игры, и таймер лучшего круга. В общем, начинаем игру, задаем, допустим, 5 кругов. Начинаем ехать, общий таймер начинает считать, заканчиваем 1-й круг, и допустим таймер лучшего круга принимает значение 2 минуты, едем второй круг и проезжаем его, допустим, за 1 минуту 30 секунд, т.е таймер лучшего круга принимает значение 1:30, дальше проезжаем остальные 3 круга и результат за каждый из них хуже чем 1:30, т.е в итоге в конце гонки получаем значение в таймере общего времени, допустим 9:30, а в тамере лучшего круга - 1:30. По окончанию игры жмем кнопочку "Начать сначала". Опять та же процедура задаем кол-во кргуов и едем. Т.е по идее мы начали новую игру и все таймеры должны сброситься. И так проезжаем первый круг за 1:40 и видим в таймере лучшего круга занчение 1:30, т.е значение с прошлой игры, т.е таймер не сбрасывается( Как сделать так чтобы таймер сбрасыался либо при нажатии на кнопку либо при переходе на какой либо кадр? Кусок кода:
Код AS1/AS2:

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

Опишите обработчик кнопки Старт(той самой которой заново запускаете)
Например:
Код AS1/AS2:

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

Спасибо, попробую


Часовой пояс GMT +4, время: 12:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.