Bonsoir,
Je rencontre un problème de compréhension dans mon utilisation de Javascript et j'aurai bien besoin d'aide.
Pour faire cours, j'ai besoin de créer un tableau d'objets contenant x instances de l'objet Image.
Le paramètre fourni à mon script dans l'appel de sa fonction est un tableau de chaîne contenant x chaines de texte représentant les URL des images.
J'ai donc commencé par créer un tableau d'objets, avec dans l'intention de le remplir par une simple boucle classique. Comme le code du dessin de l'image est un peu compliqué, j'ai procédé hors boucle, en travaillant avec un tableau de longueur 1.
J'ai mis au point le code suivant pour m'assurer de bien contrôler tous les paramètres du dessin en étendant se remplissage manuel avec une seconde image :
Le tableau d'objets ImagesLogos est instancié en début de code comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ImagesLogos[0] = new Image(); ImagesLogos[0].src = logos[0]; ImagesLogos[0].onload = function() { ctx2.drawImage(ImagesLogos[0], positions[0] + Math.round((positions[0+1]-positions[0])/2) - Math.round(parseInt(dims[0].split(":")[0])/2), yh, parseInt(dims[0].split(":")[0]), parseInt(dims[0].split(":")[1]));} ImagesLogos[1] = new Image(); ImagesLogos[1].src = logos[1]; ImagesLogos[1].onload = function() { ctx2.drawImage(ImagesLogos[1], positions[1] + Math.round((positions[1+1]-positions[1])/2) - Math.round(parseInt(dims[1].split(":")[0])/2), yb, parseInt(dims[1].split(":")[0]), parseInt(dims[1].split(":")[1]));}
Le tableau dims n'est autre qu'un tableau de chaînes contenant les dimensions de chaque image sous la forme "largeur:hauteur" fourni par le paramètre 'dims' de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part var ImagesLogos = new Array(logos.length);
Tout le tableau logos qui lui contient des chaînes représentant les URL des images. Ces tableaux sont tous de même longueur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part function experience(dates, largeur, logos, dims) {...
Le code ci-dessus fonctionne parfaitement bien.
Cependant, si j'essaie de le conditionner sous forme de boucle ça ne fonctionne plus ???
Voilà le code produit sous forme de boucle :
Je n'arrive pas à comprendre pourquoi ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for (var i = 0 ; i < 2 ; i++) { ImagesLogos[i] = new Image(); ImagesLogos[i].src = logos[i]; ImagesLogos[i].onload = function() { ctx2.drawImage(ImagesLogos[i], positions[i] + Math.round((positions[i+1]-positions[i])/2) - Math.round(parseInt(dims[i].split(":")[0])/2), yb, parseInt(dims[i].split(":")[0]), parseInt(dims[i].split(":")[1]));} }
Quelqu'un pourrait-il maider ?
Merci..
Partager