Я боролся с этой проблемой некоторое время и решил отказаться от подхода setTimeout, так как я только что прочитал, создание слишком большого количества таймеров - это плохо. Ниже приведена функция для анимации группы объектов, которая вызывается при наведении курсора. В настоящее время он настроен таким образом, что все параметры анимации передаются от пользователя и применяются к нужному объекту, затем каждый объект анимируется для каждого свойства отдельно - что позволяет контролировать скорость ввода / вывода и смягчать для каждого свойства.
Единственное, над чем я сейчас работаю, это задержки. Я не могу использовать .delay, поскольку он не находится в очереди, и я не могу использовать setTimeout (по крайней мере, в подходе, который я выбрал). Есть идеи?
function animate_in(e){
$(this).find('.captionator_background').each(function(index){
// LOOP THROUGH OBJECTS
current_obj = $(this); current_obj.stop().clearQueue();
// 1. LEFT ANIMATION
current_obj.animate({'left':ends_x_set[index]},{duration:parseInt(bg_x_speed_in_set[index], 10), queue:false, specialEasing: {'left':bg_x_ease_in_set[index]}});
// 2. TOP ANIMATION
current_obj.animate({'top':ends_y_set[index]},{duration:parseInt(bg_y_speed_in_set[index], 10), queue:false, specialEasing: {'top': bg_y_ease_in_set[index]}});
// 3. OPACITY ANIMATION
current_obj.animate({'opacity':parseInt(end_opacity_set[index], 10)},{duration:parseInt(opacity_speed_in_set[index], 10), queue:false, specialEasing: {'opacity':opacity_ease_in_set[index]}});
// 4. BACKGROUND COLOR ANIMATION
current_obj.animate({'backgroundColor':bg_color_in_set[index]},{duration:parseInt(bg_color_speed_in_set[index], 10), queue:false, specialEasing: {'backgroundColor':bg_color_ease_in_set[index]}});
}); // END EACH LOOP
}; // END ANIMATE IN FUNCTION
Спасибо!