Я пытаюсь создать бесконечную циклическую анимацию, используя ExtJs, но пытаюсь преодолеть очевидный барьер - рекурсивный вызов функции, которая потенциально никогда не заканчивается, обычно довольно быстро заполняет стек.Мой (неработающий) код ниже;эта функция получает массив строк, которые соответствуют элементам div, которые будут показаны и скрыты.Без обратного вызова код производит желаемый эффект показа / исчезновения, но, очевидно, только один раз.
// 'divArray' - a string array containing the IDs of the divs to cycle.
function cycleDivs (divArray) {
var len, i, el;
// Sanity check.
if (divArray === null || !Ext.isArray(divArray) || divArray.length === 0) {
return;
}
// Get the length of the array; we'll need this to loop the animation.
len = divArray.length;
for (i = 0; i < len; i++) {
// Get the element.
el = Ext.fly(divArray[i]);
// Sanity check.
if (el) {
el.sequenceFx();
el.fadeIn({
endOpacity: 1,
easing: 'easeOut',
duration: 3
});
el.pause(2)
el.fadeOut({
endOpacity: 0,
easing: 'easeOut',
duration: 3
});
if (i === len - 1) {
// Recursive call if this is the last element in the array.
el.callback = cycleDivs(divArray);
}
}
}
}
Предостережение: раньше я достиг такого рода эффекта с помощью jQuery и его разнообразных плагинов, но, поскольку это рабочий проект, я могу использовать только имеющуюся у меня библиотеку - ExtJs.
Заранее спасибо за любые указатели.