Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задержка выполнения (https://javascript.ru/forum/misc/4672-zaderzhka-vypolneniya.html)

COKOJIOB 12.08.2009 17:33

Задержка выполнения
 
Нужно реализовать плавное перемещение блока по экрану

block.go=function(){
	
		for (; this.ul.x > 1 && this.ul.x < 500 && this.ul.y > 1 && this.ul.y < 500; this.ul.x--, this.ul.y--) {
			document.getElementById('block1').style.left = block.ul.x;
			document.getElementById('block1').style.top = block.ul.y;
			setTimeout('block.go()',5000);
		}
}

результат при запуске перемещаемый блок отображается уже в конечной точке.
может в ява скрипте рекурсии нет??

Kolyaj 12.08.2009 17:42

Во-первых, у вас тут и нет рекурсии, во-вторых, вы перемещаете блок в один прогон, без задержек.
setTimeout != sleep.

Riim 12.08.2009 17:42

setTimeout это не sleep
http://javascript.ru/blog/Andrej-Par...cii-JavaScript

COKOJIOB 12.08.2009 18:45

Цитата:

Сообщение от Kolyaj (Сообщение 26665)
Во-первых, у вас тут и нет рекурсии, во-вторых, вы перемещаете блок в один прогон, без задержек.
setTimeout != sleep.

как нет??
ведь функция вызывается из этой же функции.

setTimeout - я так понимаю в ней указывается имя функции, которая запустится через N милисекунд указанных во втором параметре.

Kolyaj 12.08.2009 18:48

Цитата:

Сообщение от COKOJIOB
ведь функция вызывается из этой же функции.

Текущая функция благополучно завершается, из setTimeout функция вызывается уже в отдельном стеке.

Вы там вообще бред какой-то делаете. Какой смысл в запуске таймера в цикле?

COKOJIOB 12.08.2009 18:52

вы внимания на цикл не обращайте, он делался до того как я узнал что аналога функции Sleep в яваскрипте нет.

COKOJIOB 12.08.2009 18:53

сейчас он работает просто как if со счетчиком.

Kolyaj 12.08.2009 18:55

Сейчас он сразу передвигает блок на N пикселей, а потом N раз срабатывает таймаут. (N -- количество итераций)

COKOJIOB 12.08.2009 21:57

спасибо уже сам разобрался.


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