PDA

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


GRAFLEKX
27.01.2010, 00:57
Здравствуйте господа, возникли тормоза с таймером, прошу помощи.
Есть некий код:
function clickedStart(){
timing = true;
startTimer();
}
function pause() {
pauseTime = getTimer();
_root.onEnterFrame = null;
timing = false;
time_mc = true;
}
function unpause() {
if ((time_mc == true) && (timing == false)){
unpauseTime = getTimer();
pauseLength = (unpauseTime-pauseTime)+pauseLength;
_root.onEnterFrame = function (){
sed_time = getTimer() - pauseLength;
_root.count.text = time_to_string(sed_time);};
timing = true;}
}
function startTimer(){
if (timing != false){pauseLength = 0;}
start_time = getTimer();
_root.onEnterFrame = function (){
elapsed_time = getTimer()-start_time;
_root.count.text = time_to_string(elapsed_time);};
}
function time_to_string(time_to_convert){
if (timing == true){
elapsed_hours = Math.floor(time_to_convert / 3600000);
remaining = time_to_convert - elapsed_hours * 3600000;
elapsed_minutes = Math.floor(remaining / 60000);
remaining = remaining - elapsed_minutes * 60000;
elapsed_seconds = Math.floor(remaining / 1000);
remaining = remaining - elapsed_seconds * 1000;
elapsed_fs = Math.floor(remaining / 10);
if (elapsed_hours < 10){
hours = "0" + elapsed_hours.toString();
}else{
hours = elapsed_hours.toString();}
if (elapsed_minutes < 10){
minutes = "0" + elapsed_minutes.toString();
}else{
minutes = elapsed_minutes.toString();}
if (elapsed_seconds < 10){
seconds = "0" + elapsed_seconds.toString();
}else{
seconds = elapsed_seconds.toString();}
if (elapsed_fs < 10){
hundredths = "0" + elapsed_fs.toString();
}else{
hundredths = elapsed_fs.toString();}
return hours + ":" + minutes + ":" + seconds + ":" + hundredths;}
}
И кнопка:
on (press) {
clickedStart();
}
Если запустить мувик и нажать комбинацию кнопок "пауза" и "выход из паузы", то таймер работает нормально, и после выхода из паузы продолжает отсчет времени.
А если запустить мувик по кнопке (функция clickedStart();) и нажать "паузу" и "выход из паузы", то таймер показывает бред и продолжает отсчет от каких-то не понятных цифр... Прошу простить за некий каламбур.
В чем я ошибся? Я уже запутался что-то совсем... Заранее спасибо за любую помощь...

fessor
28.01.2010, 00:18
мувик стартует сразу после загрузки, не дожидаясь когда пользователь нажмет на кнопку?
возможно при повторном запуске мувика или запуске его кнопкой не обнуляются переменные отвечающие за начало отсчета (start_time)
+выражения с точки зрения флеша абсолютно одинаковые, так зачем писать больше?
if (timing == true)
if (timing)

GRAFLEKX
28.01.2010, 02:21
мувик стартует сразу после загрузки, не дожидаясь когда пользователь нажмет на кнопку?

Не совсем правильно. Чтобы было понятнее - прикрепил исходник.
Наглядный пример работы мувика:
Запускаем swf, мувик стартует автоматически и таймер ведет отсчет времени со старта. Нажимаем на кнопку "пауза", например, на 6 сек., таймер останавливается, ждем некоторое время и нажимаем кнопку "выход из паузы" - таймер продолжает отсчет с 6 сек, как и должно быть.
Теперь жмем на кнопку "рефреш", таймер обнуляется и начинает новый отсчет. Жмем на кнопку "пауза", например, на 6 сек., таймер останавливается, нажимаем "выход из паузы" и таймер продолжает отсчет не с 6 сек, а с 30-40 сек, тоесть показывает время с момента первоначального старта мувика, а не с момента нажатия кнопки "рефреш".
Где-то я пропустил цепочку обнуления таймера, а вот где не пойму...
PS: Конечно много текста, но по другому подробно не объяснишь...

GRAFLEKX
30.01.2010, 00:54
Всем спасибо огромное за необъятную помощь, проблема решена, тему можно закрывать.