Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2013, 13:58
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Отмена выполнения ф-ии
Как сделать так

if (функция уже выполняется) игнорировать ее повторное выполнение
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2013, 14:19
Аспирант
Отправить личное сообщение для Alim Посмотреть профиль Найти все сообщения от Alim
 
Регистрация: 03.07.2013
Сообщений: 31

Запуск функции 1 раз в нескольких местах
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2013, 20:56
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Не помогло. Мне надо, что при выполнении функции (анимации), повторные клики/наведения мыши (события) не запускали ее сначала.

т.е.

block.onmouseover = function() {
// какой-то код, который игнорировал повторное наведение и перезапускал ф-ю сначала

animate(.....)

}

что-то типо этого

var process = arguments.callee;
  if (process.busy) return;
  process.busy = true;


Перерыл весь рунет, так и не нашел инфы о busy, о arguments читал
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2013, 21:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

block.onmouseover = function() {

    block.onmouseover = null
    animate(.....)

}
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2013, 15:00
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Не помогает(
Смысл в том, что когда человек резко наводит/уводит несколько раз мышь с объекта, это объект прыгает, т.е. если наводит на div - объект выполняет анимацию, уводит - выполняет другую. Так и работает, но не когда человек наводит/уводит мышь, анимация выполняется несколько раз и получается некрасиво.

Мне нужно что-то типо :

block.onmouseover = function () {

if(block.onmouseover > 1) return; // т.е. надо игнорировать другие клики, пока анимация не закончится
animateProp(...)

}


В учебнике нашел такой пример http://learn.javascript.ru/play/tuto...jet/index.html
там повторные клики игнорируются, но я ума не приложу как сделать это в моем случае...
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2013, 16:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от hoax
там повторные клики игнорируются, но я ума не приложу как сделать
точно также выставлять флаг и сбрасывать по окончании анимации
if (block.busy) return;
block.busy = true;
animateProp(...
block.busy = false
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2013, 17:32
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

вставляю вот так

block.onmouseover = function () {

if (block.busy) return;
block.busy = true;


animateProp(....)

block.busy = false;

}


Но не выходит игнорировать =(

А что такое busy? Это свойство объекта какого-то? В рунете инфу о нем не нашел...
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2013, 17:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от hoax
block.busy = false;
это надо вставлять в конец анимации -- это флаг - свойство - имя любое - важно значение
Ответить с цитированием
  #9 (permalink)  
Старый 06.07.2013, 18:57
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Что-то не выходит =(

Его надо ставить в вызов animateProp? Или после него?
Надо ли ставить arguments.callee или этого флажка достаточно?
Ответить с цитированием
  #10 (permalink)  
Старый 06.07.2013, 19:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от hoax
Его надо ставить в вызов animateProp?
да
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отмена повторного выполнения события frant32 Events/DOM/Window 13 06.10.2012 12:25
Отмена действия события во время выполнения анимации gunsoy Общие вопросы Javascript 2 12.06.2012 13:27
Взаимодействие со скриптом на протяжении его выполнения Malgin AJAX и COMET 6 23.08.2010 22:39
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35
разное время выполнения операции ropowek Events/DOM/Window 2 08.10.2008 13:27