Показать сообщение отдельно
  #1 (permalink)  
Старый 22.03.2011, 12:37
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

Как выполнить ClearInterval из вложенного clearinterval
Есть следующий скрипт ниже (упрощенный). Подскажите, как в нем полностью остановить animate и state из gameover?
animate заставляет двигаться объект, state - проверяет состояние в определенный момент после переноса объекта мышью и вызывает движение снова, gameover - останавливает игру по истечении определенного времени.
var state = setInterval(function() { 
var animate = setInterval(function() { 

$("#playobject").animate({ 
left: '+=15px'}, 80);

$("#playobject").mousedown(function(event){
$(this).stop();
clearInterval(animate);
});

$("#playobject").mouseup(function(event){
$("#playobject").offset().top = event.pageY;
$("#playobject").offset().left = event.pageX;
});

$("#playobject").mouseover(function(){
$("#playobject").css('cursor','pointer');
});


},80);

$("#playobject").mouseup(function(){
clearInterval(animate);
});

},2000);


Скрипт, из которого нужно остановить два верхних таймера:

var i = 0;
var gameover = setInterval(function() {
if(i==40){
clearInterval(gameover);
clearInterval(animate);
clearInterval(state);
alert("Вы выиграли! Ура!");
}
i++; 
},1000);


Вроде все работает как надо, но после остановки игры память все равно жрется в диких количествах, особенно в IE. Я подозреваю это происходит потому, что не все таймеры отключаются.

Последний раз редактировалось ArmagedDance, 22.03.2011 в 12:43.
Ответить с цитированием