Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Diaporama d'image avec modulo et setInteval

Compatible ActionScript 2. Cliquer pour en savoir plus sur les compatibilités.

Voici un morceau de code qui permet de créer un slideshow (diaporama) à l'aide de l'opérateur modulo.

Ce morceau de codes est compatible AS2 (Flash MX2004 et +), pour l'utiliser dans FlashMX retirer le typage des variables.

// déclaration des variables
var aListePhotos:Array = new Array();
var nI:Number = 1;
 
// construction de la liste d'images
for (nJ=1; nJ<=4; nJ++) {
	// création de clip vide pour charger les images
	var mcImage:MovieClip = MovieClip=this.createEmptyMovieClip("mcImg"+nJ, nJ);
	with (mcImage) {
		_x = 0;
		_y = 0;
		_visible = false;
		loadMovie("loft"+nJ+".jpg");
	}
	// ajouts de la référence du clip au tableau
	aListePhotos.push(mcImage);
}
 
// fonction de transition
function slideShow() {
	nI++;
	var nMax:Number = aListePhotos.length;
	var mcAffiche:MovieClip = aListePhotos[nI%nMax];
	var mcMasque:MovieClip = aListePhotos[(nI-1)%nMax];
	mcAffiche._visible = true;
	mcMasque._visible = false;
}
 
// Transition toutes les 2 secondes
var nInterval:Number = setInterval(slideShow, 2000);

Les sources : diaporama_d_image_avec_modulo_et_setinterval.zip

Modulo ?

Modulo est un opérateur qui permet permet de calculer le reste d'une division faite entre deux valeurs.

exemple :

trace(2%4); // return 2
trace(5%4); // return 1
trace(540%360) // return 180

Dans le code ci-dessus on utilise l'opérateur modulo pour pouvoir lire en boucle le contenu d'un tableau.

// Incrémentation
nI++;
// Valeur maximal == longueur du tableau (liste d'images).
var nMax:Number = aListePhotos.length;
// Récupère la référence du clip à afficher.
var mcAffiche:MovieClip = aListePhotos[nI%nMax];
// Récupère la référence du clip à masquer.
var mcMasque:MovieClip = aListePhotos[(nI-1)%nMax];

Astuce

Modulo permet aussi de créer des boutons de type Triggler (2 positions - true/false).

exemple :

var nI : Number = 0;
var bPosition : Boolean;
function triggler()
{
	nI++;
	bPosition = nI%2 == 1 ? true : false;
	trace(bPosition);
}
var nInterval:Number = setInterval(triggler, 1000);

Ce code revoit alternativement true/false.

Bonne journée :^)

Ancienne version

Flash MX :

aCont = new Array(); // le tableau des clips conteneurs
nInc = 1; // l'incrément
 
for (i=1; i<=4; i++) {
	mcDub = recepteur.duplicateMovieClip ("img"+i, i);
	mcDub._x = 0;
	mcDub._y = 0;
	mcDub.loadMovie ("loft"+i+".jpg");
	aCont.push (mcDub);
}
function slideShow() {
	nInc++;
	mcAffiche = this.aCont[nInc%aCont.length];
	mcMasque = this.aCont[(nInc-1)%aCont.length];
	mcAffiche._visible = true;
	mcMasque._visible = false;
}
var slideInt:Number = setInterval (this, "slideShow", 2000);

Flash 5 :

// initialisation d'un tableau qui contiendra le nom des movies images 
 
mov = new Array();
 
// initialisation d'une variable correspondant à l'index de la première image 
 
a = 1;
 
// boucle sur le nombre d'image à créer 
 
for (j=1; j<=4; j++) { 
 
  recepteur.duplicateMovieClip("img"+j, j);
 
// retrouve le chemin du movie "img+j" 
 
  tg = eval("img"+j); 
 
  tg._x = 0; 
 
  tg._y = 0; 
 
  tg.loadMovie("loft"+j+".jpg"); 
 
// insére dans le tableau le nom de chaque movie "img+j" 
 
 mov.push(tg._name); 
 
} 
 
function SlideShow() {
 
// incrémentation de la variable 
 
 a++;
 
// utilisation de l'opérateur modulo permettant de tourner en boucle sur le tableau 
 
// lorsque a est supérieur à la longueur du tableau mov,a retrouve sa valeur d'origine 
 
  affiche = eval(mov[a%mov.length]); 
 
  masque = eval(mov[(a-1)%mov.length]); 
 
  affiche._visible = true; 
 
  masque._visible = false; 
 
} 
 
// gestion de la fonction par la fonction SetInterval permettant de l'appeler toutes les 2 secondes 
 
SlideInt = setInterval(SlideShow, 2000);