Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задержка цикла (и гинеколог тут непричём) (https://javascript.ru/forum/misc/37520-zaderzhka-cikla-i-ginekolog-tut-neprichjom.html)

Barsam 23.04.2013 01:57

Задержка цикла (и гинеколог тут непричём)
 
Здравствуйте!
Надо чтобы цикл выполнял действие с интервалом в N секунд, на каждый проход по циклу.
Подскажите, пож., как сделать задержку в цикле?
Моя реализация не работает:
for(var i=0; i<(all-1); i++) {
    /* какое-то действие */
    setTimeout('alert("прошла секунда")', 1000);
}

Сначала проходит весь цикл, потом начинает мне alert выводить.

Ну и сразу задам второй вопрос: как реализовать простое плавное !Равномерное! движение?

bret 23.04.2013 02:17

var i = 0;
    var timer = setInterval(function() {
        if(i < (all - 1)) {
            /* какое-то действие */
            i++;
        } else {
            clearInterval(timer);
        }
    }, 1000);

Хотя, если действие "длинное" - для точности срабатывания временных задержек рекомендуется использовать вложенные setTimeout

Равномерное движение есть движение с постоянной скорость пикс/сек. Т.е. задача в том, чтобы перемещать объект на одинаковое число пикселей за одинаковое время.

Barsam 23.04.2013 04:04

Спасибо, работает великолепно!

И еще немного про равномерное движение. Я понимаю, что это такое, я не совсем понимаю, как двигать что-то(пусть это будет блок div), и связать это со временем.
Если можно, покажите, пож., небольшой пример. И если не затруднит, то с использованием jQuery.

Для решения, я использовала вышеизложенный подход, однако, мне кажется он совсем не верен.
Задача в том, чтобы воссоздать движением с равномерным ускорением.
К сожалению, jQuery animate двигает нужный объект, но не с равноускоренно.

bret 23.04.2013 11:17

animate
Про равномерное (не равноускоренное!) смотрите на параметр easing


Часовой пояс GMT +3, время: 14:08.