Dim, 10/12/2008 - 13:42 — ZenBien
Quand vous chargez une image de façon dynamique via actionscript, vous n'avez pas de temoin de chargement qui s'affiche, dans certains cas vous vous trouvez avec une page vide le temps que l'image se charge, je vous propose donc une méthode (il doit en exister plein...) qui fait un préchargement d'un image de petite taille permettant de faire patienter l'utilisateur puis charge en arrière plan une grosse image, une fois celle-ci chargée, elle peut alors remplacer la petite.
L'astuce est de récupérer l'évènement Event.COMPLETE de la grosse image et d'associer l'action de changement à celle-ci.
Le mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
viewSourceURL="source/index.html"
applicationComplete="init()"
>
<mx:Script source="test.as" />
</mx:Application>
Le fichier test.as
import mx.containers.Canvas;
import mx.controls.Image;
private var unCanvas:Canvas = new Canvas();
private var unCanvasTemp:Canvas = new Canvas();
private var grossePhoto:Image;
public function init():void{
var petitePhoto:Image = new Image();
petitePhoto.source="photoMin.JPG";
petitePhoto.scaleX=3;
petitePhoto.scaleY=3;
addChild(unCanvas);
unCanvas.addChild(petitePhoto);
grossePhoto = new Image();
grossePhoto.source=('photoMax.JPG');
unCanvasTemp.addChild(grossePhoto);
grossePhoto.addEventListener(Event.COMPLETE, changementImages);
}
private function changementImages(e:Event):void{
unCanvas.removeChildAt(0);
unCanvas.addChild(grossePhoto);
}