Зацикливание функции setTimeout 
		
		
		
		Здравствуйте!  
	Код: 
function ani_hide(elm, i, o, func)
{
	elm.style.opacity =  (o / 100);
	elm.style.filter = 'Alpha(opacity=' + o + ')';
	if (o > 0) {o -= 5; setTimeout ('ani_hide('+elm+', '+i+', '+o+', '+func_');'), i);}
	else setTimeout (func(), 3000);
}
ani_hide(element, 50, 100, function () {flag_DOWN = true;});
Подскажите как правильно оформить функции для запуска в setTimeout. Первая выдает ошибку. Вторая запускается без задержки. Спасибо.  | 
	
		
  | 
	
		
 caetus, 
	запускать? :blink:  | 
	
		
 MininAS, Вы немного отстали от моды, такое делается через CSS3, и забудьте про filter: alpha. 
	Советую почитать про transition.  | 
	
		
 Рони ??? 
	
function ani_hide(elm, i, o, func)
{
    // style
    if (o > 0) {o -= 5; setTimeout (function () { ani_hide(elm, i, o, func)}, i);}
    else setTimeout (func, 3000);
}
 
ani_hide(0, 50, 100, function () {flag_DOWN = true;});
 | 
	
		
 caetus, 
	какой смысл запускать когда ничего не происходит визуально  | 
	
		
 Ruslan_xDD, 
	css не запустит callback  | 
	
		
 Цитата: 
	
 А по поводу Filter:alpha - представьте, но еще есть пользователи которые используют IE версии < 9-й.  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 по ссылке выше универсальная функция для любой анимации и callback пример на её основе http://javascript.ru/forum/misc/5707...s=1#post380280  | 
	
		
 Цитата: 
	
 А вот второй нет.  | 
	
		
 посмотри по ссылке которую кинул Рони , там функция универсальна ))) 
	
function ani_hide(elm, i, o, func)
{
    // style
    if (o > 0) {o -= 5; setTimeout (function () { ani_hide(elm, i, o, func)}, i);}
    else setTimeout (func, 3000);
}
 
ani_hide(0, 50, 100, function () {alert(2);}); // 3 с жди
 | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Ruslan_xDD, 
	то что это будет уже не css а js :)  | 
	
		
 Ruslan_xDD, 
	плюс проблема на все анимации классов не напасёшься и прерывание css-анимации выдумывать типа $.stop()  | 
	
		
 Не знал про transitionend. 
	Изучил материал - класненько, все получилось. Да и классов много не надо можно каждому объекту непосредственно присвоить стиль или создать один класс и присваивать объекту и отбирать назад. Но все таки почему не работает func ? )  | 
	
		
 func то же завернул в функцию:  
	
setTimeout (function () {func();}, 300);
Заработало. После встал вопрос как в func выполнить действия над объектом и сообразил передать ссылку в функции на объект, в общем надо было так: 
function ani_hide(elm, i, o, func)
{
	elm.style.opacity =  (o / 100);
	if (o > 0) {o -= 10; setTimeout (function () {ani_hide(elm, i, o, func);}, i)}
	else setTimeout (function () {func(elm);}, 300);
}
ani_hide(a_block[i], 50, 100, function (elm) 
{
	elm.src = 'img/ball_0.png';
	elm.style.opacity = 1;
	flag_DOWN = true;
});
 | 
	
		
 Скрип использовал в игре Сфера. 
	http://matrix-games.ru  | 
| Часовой пояс GMT +3, время: 15:06. |