отмена выполнение обработчика

Arramis

Новичок
как остановить выполнение обработчика события из другого обработчика этого же события ?? я делаю плеер нужно чтобы на кнопу play проигрывание останавливалось а на pause обратно включалось, у меня сложность в том что обработчик проигрывания выполняется рекурсивно и он останавливается только тогда когда сам этого захочет - никакие e.preventDefault() и e.stopImmediatePropagation() не помогли...
тоесть мне нужно чтобы рекурсия прерывалась на клике на ту же кнопку что и запуска обработчика (в котором запускается эта рекурсивно работающая функция) - кусок нужного кода
PHP:
var buttonPlay = document.getElementById("button_play");
function addHandler(sourceNode) { 
	var runCycle = function(callback, timer) { // эта функция рекурсивно запускает проигрывание 
			if (index < pics.length) {
				sourceNode.src = "buttons/button_pause.png";
				setTimeout (function() {
							callback();		
							runCycle(callback, timer);
							}, timer);
			}
			else { 
				sourceNode.src = "buttons/button_play.png"; 									
			}
	}
	sourceNode.onclick = function() { runCycle(playNext, 1000); } // вешаем обработчик на onclick
//теперь как остановить runCycle(playNext, 1000) кликнут на тот же SourceNode ????
/*
** тоесть нужно сделать что - то типо : 
   if (проигрывается) остановить; else продолжить проигрывание;
**
*/
}
addHandler(buttonPlay);
HTML:
<img name = "button_play!" id = "button_play" src = "buttons/button_play.png" alt = 'button'>
трейтий день ломаю голову, помогите пожалуйста ((
 

WMix

герр M:)ller
Партнер клуба
те sourceNode.onclick запускает runCycle(playNext, 1000); который запускает runCycle(playNext, 1000);
рекурсивненько :)
 

Arramis

Новичок
те sourceNode.onclick запускает runCycle(playNext, 1000); который запускает runCycle(playNext, 1000);
рекурсивненько :)
уже по другому решил проблему)) ...
создал еще одну кнопу которая сбрасывает setTimeout() с помощью глобальнйо переменной...
афигеть 3 дня не мог дойти до того чтобы id для setTimeout объвить глобальным))
 
Сверху