Код с использованием mootools 1.4.1 вызывает бесконечный цикл
Я использую mootools 1.4.1 и пытаюсь получить div, который изменяет ширину экрана, чтобы запустить другую функцию по завершении. Тем не менее, подросток продолжает стрелять, и я не верю, что он запускает функцию, которую я хочу.
Код ниже:
$('photo-loading_amt').set('tween', {duration: '1000ms',
link: 'cancel',
transition: 'linear',
property: 'width',
onComplete: function() {
var photoContainers = $$('.photo-container')
if (photoNum != photoContainers.length) {
nextPhoto(photoNum.toInt() + 1);
}
else {
nextPhoto(1);
}
}
});
Мы будем благодарны за любую помощь, которую вы могли бы получить.
@Dimitar Christoff, вот код для функции nextPhoto:
function nextPhoto(photoNum) {
resetTimeline();
var photoContainers = new Array();
photoContainers = $$('.photo-container');
var photoFx = new Fx.Tween(photoContainers[photoNum.toInt() - 1], {
duration: 'normal',
transition: Fx.Transitions.Sine.easeOut,
property: 'opacity',
onComplete: function() {
photoContainers[photoNum.toInt() - 1].setStyle('visibility', 'hidden');
photoContainers[photoNum.toInt() - 1].setStyle('opacity', 1);
if (photoNum == photoContainers.length) {
photoContainers[0].setStyle('z-index', photoContainers.length);
}
}
});
if (photoNum == photoContainers.length) {
photoContainers[0].setStyle('z-index', 0);
}
photoFx.tween(1, 0);
//alert("photoNum = " + photoNum + "\n" + "photoContainers.length = " + photoContainers.length);
if (photoNum == photoContainers.length) {
photoContainers[0].setStyle('visibility', 'visible');
}
else {
photoContainers[photoNum.toInt()].setStyle('visibility', 'visible');
//loadingPhotos(photoNum.toInt() + 1);
}
// hard reset the loadingPhotos function
} // конец функции nextPhoto
1 ответ
Поскольку в вашем коде я не вижу видимого цикла, я подозреваю, что
link: 'cancel'
в вашем первом блоке кода. Согласно Moo Docs это будет:
"отмена" - любые вызовы, сделанные для запуска во время работы эффекта, будут иметь приоритет над текущим переходом. Новый переход начнется немедленно, отменив тот, который запущен в данный момент.
Так что это может расстроить ваших подростков. Тем не менее, вы, вероятно, добавили это намеренно. Я бы попробовал изменить это на chain
или же ignore
как в вашей первой, так и во второй настройке анимации, чтобы увидеть, что сочетается лучше всего. Если это не решит проблему, возможно, вы могли бы опубликовать еще немного кода. Например, я не вижу код для resetTimeline
функция. Возможно, ваш код застревает здесь.