код с использованием mootools 1.4.1 вызывает бесконечный цикл - PullRequest
1 голос
/ 27 октября 2011

Я использую 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 Ответ

0 голосов
/ 28 октября 2011

Так как я не вижу видимого цикла в вашем коде, я подозреваю, что эффект будет вызван

link: 'cancel'

в вашем первом блоке кода.Согласно документам Moo это будет:

'отмена' - любые вызовы, сделанные для запуска во время выполнения эффекта, будут иметь приоритет над текущим переходом.Новый переход начнется немедленно, отменив тот, который в данный момент выполняется.

Так что это может расстроить ваших подростков.Тем не менее, вы, вероятно, добавили это намеренно.Я бы попробовал изменить это значение на chain или ignore, как в вашей первой, так и во второй настройке анимации, чтобы увидеть, что лучше сочетается.Если это не решит проблему, возможно, вы могли бы опубликовать еще немного кода.Например, я не вижу код для функции resetTimeline.Возможно, ваш код застревает здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...