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