Photos
Créer et remplir un clip dynamiquement
Charger des photos en AS3 (depuis un dossier externe)
Le chargement d'images ou de swf dans Flash va se faire grâce à deux nouvelles classes AS3 : Loader et URLRequest. La classe Loader va nous permettre de créer un conteneur de chargement. La classe URLRequest va nous permettre de définir l'url absolue ou relative du fichier à charger.
Charger des images gif, jpeg, png ou des swf (AS3)
// création du conteneur de l'image ou du swf
var conteneurImage:Loader = new Loader();
// url de l'image ou du swf à charger
var image:URLRequest = new URLRequest("logo/logo.gif");
// chargement de l'image ou du swf dans le conteneur
conteneurImage.load(image);
// affichage du conteneur
this.addChild(conteneurImage);
// création du conteneur de l'image ou du swf
var conteneurImage:Loader = new Loader();
// url de l'image ou du swf à charger
var image:URLRequest = new URLRequest("logo/logo.gif");
// chargement de l'image ou du swf dans le conteneur
conteneurImage.load(image);
// affichage du conteneur
this.addChild(conteneurImage);
Le chargement se fera grâce à la méthode load() de l'objet loader. L'affichage de l'image ou du swf se fera grâce à la méthode addChild(). La classe MovieClipLoader est remplacé par la classe Loader. De même que la classe LoadVars est remplacé par la classe URLLoader.
Il est à noter que cela fonctionne même si l'on charge un fichier swf qui contient du code AS1 ou AS2, car le Flash Player 9 intègre l'AVM 1 (ActionScript Virtual Machine 1), qui interprète le code AS1 et AS2, ainsi que l'AVM 2 qui interprète le code AS3.
Exemple de chargement de plusieurs images - AS3
Chaques images est nommée par un numéro (de 0.png à n.png)
for (var i:int = 0; i < 5; i++) {
// chargement des images dans un loader
var conteneurImage:Loader = new Loader();
var image:URLRequest = new URLRequest("images/"+i+".png");
conteneurImage.load(image);
// on cré un clip
var mc = new MovieClip();
mc.graphics.beginFill(0x000088); // remplissage d'un fond de couleur (tjours devant drawRect)
mc.graphics.drawRect(0, 0, 100, 43); // drawRect(pos. horizontal, pos. vertical, largeur, hauteur)
this.addChild(mc);
// on met le loader dans le clip
mc.addChild(conteneurImage);
// positionement du clip en décalé
mc.x += mc.width * (i-1);
mc.y = 50;
}
Chaques images est nommée par un numéro (de 0.png à n.png)
for (var i:int = 0; i < 5; i++) {
// chargement des images dans un loader
var conteneurImage:Loader = new Loader();
var image:URLRequest = new URLRequest("images/"+i+".png");
conteneurImage.load(image);
// on cré un clip
var mc = new MovieClip();
mc.graphics.beginFill(0x000088); // remplissage d'un fond de couleur (tjours devant drawRect)
mc.graphics.drawRect(0, 0, 100, 43); // drawRect(pos. horizontal, pos. vertical, largeur, hauteur)
this.addChild(mc);
// on met le loader dans le clip
mc.addChild(conteneurImage);
// positionement du clip en décalé
mc.x += mc.width * (i-1);
mc.y = 50;
}
Petit plus :
Un petit trait blanc de séparation entre les clips (facultatif).
A rajouter en bas du code précédent - dans la boucle for :
var bigclip = new MovieClip();
bigclip.graphics.beginFill(0xffffff);
bigclip.graphics.drawRect(0, 0, 5, mc.height);
addChild(bigclip);
bigclip.x = mc.x;
bigclip.y = 50;
Astuce: Le cadre réalisé avec la méthode drawRect (de l'objet graphics) doit être aussi haut que les images chargées et un petit peu plus large de manière à faire apparaitre le fond de couleur.