Зацикливание функции 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, время: 14:49. |