![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 9
|
делаю таймер с обратным отсчётом
var msec = 3000; var sec; var dsec; countDown = function(){ msec--; var sec = Math.floor(msec/100); dsecx=msec-sec*(100); time_txt.text=sec+":"+dsec; } setInterval(countDown, 1); Объясните пожалуйста почему так? |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Нелья полагаться на setInterval в такой задаче, используйте getTimer.
Точнее используйте setInterval с бОльшим значением промежутка для отображения, а getTimer для подсчета милисекунд. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 9
|
а с кодом не поможете, пожалуйста?
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Если модифицируя ваш исходник то:
var msec = 3000; var timerstart; var sec; var dsec; countDown = function(){ var csec = msec - Math.floor((getTimer() - timerstart)/10); var sec = Math.floor(csec/100); dsec=csec-sec*(100); if (dsec < 10) { dsec = '0' + dsec; } time_txt.text=sec+"."+dsec; } timerstart = getTimer(); setInterval(countDown, 20); Последний раз редактировалось rainbowrussia; 01.10.2010 в 23:31. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 9
|
ОГРОМНОЕ СПАСИБО!!!
Заработало!!! Добавлено через 22 минуты только теперь переменные не сохраняются после завершения процессов для которых установлен таймер, идёт следующий кадр с результатами раньше было а теперь переменная обновление msec, то есть теперь уже csec не сохраняется Как поступить? помогите, пожалуйста! |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
var msec = startsec = 3000; var timerstart; var sec; var dsec; countDown = function(){ var msec = startsec - Math.floor((getTimer() - timerstart)/10); var sec = Math.floor(msec/100); dsec=msec-sec*(100); if (dsec < 10) { dsec = '0' + dsec; } time_txt.text=sec+"."+dsec; } timerstart = getTimer(); setInterval(countDown, 20); |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 9
|
Cпасибо!
Но оказалось достаточным избавиться от var. Получилось вот так: var msec = 3000; var timerstart; countDown = function(){ csec = msec - Math.floor((getTimer() - timerstart)/10); sec = Math.floor(csec/100); dsec = csec-sec*(100); if (dsec < 10) { dsec = '0' + dsec; } time_txt.text=sec+":"+dsec; } timerstart = getTimer(); setInterval(countDown, 48); var msec = -5700; var timerstart; countDown = function(){ csec = msec - Math.floor((getTimer() - timerstart)/10); sec = Math.floor(csec/100); dsec = csec-sec*(100); if (dsec < 10) { dsec = '0' + dsec; } time_txt.text=sec+":"+dsec; if(csec<-5900){ gotoAndStop("GameOver2"); } } timerstart = getTimer(); setInterval(countDown, 48) вот только загвоздка, если юзер выполняет всё в срок он переходит на следующий экран, но при достижении 90 секунд его всё равно выкидывает на "GameOver2", то есть секундомер не прекращается. Есть ли возможность его остановить? и обнулить... чтобы можно было повторно пройти... Последний раз редактировалось vepr; 02.10.2010 в 14:37. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Цитата:
Если остановить - то или делайте в onEnterFrame предыдущую инструкцию или допишите то что вам нужно, чтобы просто не делать вычисление таймера. Вы просто посмотрите алгоритм, поймите как он работает - и примените к вашей конкретной задаче, совсем не обязательно дословно. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|