Показать сообщение отдельно
Старый 07.12.2009, 23:34
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
По крайней мере есть одна неправильность. Вы стартуете в цикле несколько "интервалов".
А удаляется интервал только один раз, последний.

Что делает это кусок, зачем несколько раз задается повторное выполнение moveIt ?
Код AS1/AS2:
for (var i:Number = 0; i < pole1; i++) {
	moveBk = setInterval(moveIt, 100);
}
Вы же не задаете никакого меняющегося параметра в интервальной функции, просто мгновенно запускается несколько параллельных периодических выполнений... Они наслоятся, и удалится только последнее периодическое выполнение..

setInterval запускает циклический повтор сам по себе, без приравнивания возвращаемого номера интервала. Если мы присваиваем какой-то переменной возвращаемый номер, а потом ссылаемся на нее при удалении интервала, то просто указываем номер интервала для удаления. Поэтому, если переменной (moveBk) мы присваиваем последовательно несколько возвращаемых номеров интервалов, то при ссылке на moveBk в clearInterval будет остановлен только последний присвоенный номер. А в цикле-то был несколько раз вызван setInterval, остальные-то предыдущие тоже нужно поудалять, если что.


Последний раз редактировалось mooncar; 07.12.2009 в 23:43.