Javascript: уменьшение скриптового мерцания с помощью очередей эффектов?

#javascript #prototypejs #scriptaculous

#javascript #prototypejs #скриптовый

Вопрос:

Я просто собираю простую часть Javascript, используя Prototype и Scriptaculous. Это очень просто: просто удаляем пользовательскую цитату, переключаем ее на другую, а затем снова вводим. Проблема в том, что затухание Scriptaculous немного неустойчиво. Я предполагаю, что это связано с тем, что затухание, переключение, постепенное включение происходит так быстро, что браузеру трудно поспевать.

Сначала я думал, что пауза сработает, но теперь я прочитал, что вы можете использовать очереди эффектов для решения этой проблемы, но, хоть убейте, я не могу заставить это работать.

Вот исходный проблемный код без каких-либо очередей эффектов:

 function fadeOut() {
new Effect.Opacity('quoteContainer', {from: 1.0, to: 0.0 });
}

function fadeIn() {
new Effect.Opacity('quoteContainer', {from: 0.0, to: 1.0 });
}

function changeQuote(i) {
    fadeOut();
    $('quote').innerHTML = quoteArray[i];
    $('name').innerHTML = nameArray[i];
    fadeIn();
}

changeQuote(0); // 1stQuo

window.onload = function () {
    var i = 1;
    var pause = setInterval(function () {
        changeQuote(i);
        i  ;
        if (i>11) { i=0; } // Go to first quote in array
    }, 7000);
}
  

Если, конечно, у кого-нибудь нет лучшей идеи о том, как уменьшить мерцание?

Ответ №1:

 setTimeout(function () {
   fadeIn();
}, 500); 
  

время в мс, то есть 500 мс

Комментарии:

1. Боюсь, это просто все испортило : (

2. Обнаружил вещь, называемую очередями эффектов. Очевидно, что Scriptaculous запускает все эффекты одновременно, и вам нужно сказать ему подождать.