Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Пауза в JavaScript

Ответить
Настройки темы
[решено] Пауза в JavaScript

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204


Конфигурация

Профиль | Отправить PM | Цитировать


Как организовать паузу в скрипте на заданное количество миллисекунд?
Нужно повторять определённое действие (переместить объект), скажем, 20 раз в секунду. При этом в паузах желательно не тратить процессорное время.

Отправлено: 16:17, 04-11-2007

 

Аватара для XCodeR

Ветеран


Сообщения: 878
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


поможет?

или:
Цитата:
function sleep(msec) {
var k = function_continuation;
setTimeout(function() { resume k <- mesc; }, msec);
suspend;
}

Отправлено: 17:15, 04-11-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


По ссылке - работает, но съедает процессор на 100%, т.ч. не подходит.

Приведённый код не работает, но идею я понял: через msec миллисекунд должно восстанавливаться исполнение, остановленное строкой suspend;
Вот только suspend; не останавливает исполнение =\

Отправлено: 17:54, 04-11-2007 | #3


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
setTimeout("alert('hello')",1250);
http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm

функция pause:
Код: Выделить весь код
function pause(millis) 
{
setTimeout(";", millis);
}
по-моему так (c)
; - такая операция в javascript вообще есть?

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 18:42, 04-11-2007 | #4


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Хм... Как-то я не могу связать.

Вот код:
HTML код: Выделить весь код
<html> <head> <title>1</title> <style> body {font-size:0px;} </style> </head> <body onLoad=mov();> <div id="id1" style="background-color:red; top:100; left:100; position:absolute; width:2; height:2"></div> <script> <!-- function mov2() { var div = document.getElementById("id1"); var temp = div.style.top.substr(0,3); div.style.top = temp++; } function mov() { setTimeout("mov()",100); mov2(); } //--> </script> </body> </html>

По идее функция mov() должна вызываться рекурсивно каждые 100 мс и с каждой итерацией вызывать mov2(), которая будет сдвигать красную точку на 1 пиксель вниз. Собственно, функция отрабатывает как раз через равные интервалы, но появилась новая проблема - в div.style.top каждый раз оказывается одно и то же значение =( Почему?(

Если же сделать функцию pause:
Цитата Arrest:
function pause(millis)
{
setTimeout(";", millis);
} »
то цикл, перемещающий слой отрабатывает на максимальной скорости, а потом через заданный интервал срабатывает "пауза"

Отправлено: 19:15, 04-11-2007 | #5


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


а она точно отрабатывает? может
Код: Выделить весь код
function mov() {
  mov2();
  setTimeout("mov()",100);
  }

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 20:15, 04-11-2007 | #6


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Arrest, точно отрабатывает в том порядке, как я написал. Ставил для отладки интервал 3000 и в mov2() дописывал alert(div.style.top);
Каждые 3 секунды выскакивает окошко с числом 101. Т.е. оно как бы изменяется, но потом загадочным образом возвращается в по-умолчательское положение.

Отправлено: 20:55, 04-11-2007 | #7


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Coutty
HTML код: Выделить весь код
<html> <head> <title>1</title> <style> body {font-size:0px;} </style> </head> <body onLoad=mov();> <div id="id1" style="background-color:red; top:100; left:100; position:absolute; width:2; height:2"></div> <script> <!-- var tp = parseInt(document.getElementById("id1").style.top.substr(0,3)); function mov2() { tp = tp+1; sync(); } function sync(){ document.getElementById("id1").style.top = tp+"px"; } function mov() { setTimeout("mov()",1000); mov2(); } //--> </script> </body> </html>

Opera 9.2, работает.

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:17, 04-11-2007 | #8


Deadooshka


Сообщения: 2558
Благодарности: 697

Профиль | Отправить PM | Цитировать


HTML код: Выделить весь код
window.setInterval("alert('Есть такой метод!')", 1000); // забываем...

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:30, 05-11-2007 | #9


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Arrest, здорово, работает))) Надо было-то всего лишь глобальную переменную объявить)

Sham, setInterval тоже работает, но... как её остановить вовремя? Скажем, мне нужно только 100 итераций.
Писать что-то вроде:

Код: Выделить весь код
var t = 100;
function temp1(){
  if (t>0) 
    {
    mov2();
    t--;
    }
}

function mov() {
   window.setInterval("temp1()",1000);
}
Но она будет каждые 1000 мс отъедать кусочек процессорного времени. Или можно сделать какой-нибудь window.stopTimer?)

Хотя, думаю, что у неё просто другое предназначение.

Всем спасибо за помощь! Ня)

Отправлено: 09:48, 05-11-2007 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Пауза в JavaScript

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Внимание!!! "рекламная пауза" acid_vision Лечение систем от вредоносных программ 31 22-05-2009 15:20
[решено] Пауза скрипта до нажатия любой клавиши Dj Dynamite AutoIt 1 12-02-2009 13:31
пауза на T-9 Barathrum Автоматическая установка Windows 2000/XP/2003 4 11-10-2007 10:24
Загрузка - [решено] Пауза при загрузке... Emilius Microsoft Windows Vista 6 31-08-2007 13:53
Пауза DillerInc Хочу все знать 2 17-08-2004 00:48




 
Переход