2012-02-23 14 views
3

Mon problème est, j'ai plusieurs images et je veux charger comme préchargeur, mais le problème est que je veux commencer le chargement de la deuxième image après avoir terminé le premier. Dans mon code actuel, je stocke toutes les images dans un tableau et j'utilise une boucle pour charger toutes les images (donner la source de toutes les images du tableau à un objet image), puis toutes les images commencent à se charger.Charger les images les unes après les autres en JavaScript

+0

fournir un script! –

+0

J'ai tableau comme arr ['1.jpg', '2.jpg', '3.jpg'] contient des images et charge 1.jpg d'abord puis après avoir terminé 1. jpg charger 2.jpg et ainsi de suite ..., image ces chargements complets seront stockés dans un autre tableau – ketan

Répondre

10

Vous voulez jeter un coup d'œil à l'événement load.

function loadImagesInSequence(images) { 
    if (!images.length) { 
    return; 
    } 

    var img = new Image(), 
     url = images.shift(); 

    img.onload = function(){ loadImagesInSequence(images) }; 
    img.src = url; 
} 

loadImagesInSequence(['a.png', 'b.png', 'c.png']); 

Chaque fois qu'une image est chargée, l'événement de chargement est déclenché. Lorsque cela arrive, nous exécutons à nouveau loadImagesInSequence(). Nous ne chargerons pas la même image deux fois, car Array.shift() sera retirée du tableau que nous avons simplement traversé.

+0

+1 Vous devriez appeler 'shift()' avant de configurer 'img.onload' - je sais que cela fonctionne mais c'est déroutant: Si vous ne connaissez pas bien le JavaScript, vous pouvez supposer qu'une "copie" du tableau d'images est faite pour l'appel et que le "shift()" n'a aucun effet (ou que l'effet se produit après la préparation de l'appel de la fonction). –

Questions connexes