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 :
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 d'objets ImagesLogos est instancié en début de code comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var ImagesLogos = new Array(logos.length);
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
function experience(dates, largeur, logos, dims) {...
Tout le tableau logos qui lui contient des chaînes représentant les URL des images. Ces tableaux sont tous de même longueur.
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 :
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]));}
		}
Je n'arrive pas à comprendre pourquoi ???
Quelqu'un pourrait-il maider ?
Merci..