Hi,
Just a little problem a bit painful:
- loading pics from paths in an XML file,
- once loaded they are positionned one on the right of the other (depending on their specific width) as thumbnails in the bottom of the screen,
- weirdly they don’t display the way they should, never in the same order and not following at all the xml order (maybe the loading order??)
Anybody’s got any idea to fix this one?
My code:
private function parseXML(xmlData:XML):void {
var XMLDoc:XMLDocument = new XMLDocument();
XMLDoc.ignoreWhite = true;
var list:String = xmlData.toXMLString();
XMLDoc.parseXML(list);
arrayPics = XMLDoc.firstChild.firstChild.childNodes;
var countPicts:uint;
var nbPicts:uint = arrayPics.length;
var thumbnailName:String;
//trace(nbPicts);
for(countPicts=0;countPicts<nbPicts;countPicts++)
{
arrayPicsId[countPicts] = arrayPics[countPicts].attributes.id;
arrayPicsTitle[arrayPicsId[countPicts]] = arrayPics[countPicts].attributes.title;
arrayPicsDesc[arrayPicsId[countPicts]] = arrayPics[countPicts].attributes.desc;
thumbnailName = arrayPicsId[countPicts];
thumbnailURL = rootPictsPath+thumbnailName+"a.jpg";
var loaderThumbnail:Loader = new Loader(); //conteneur pour chaque image
loaderThumbnail.contentLoaderInfo.addEventListener(Event.COMPLETE, onThumbnailLoaded);
instanceTn = loaderThumbnail.name;
numInstanceTn = instanceTn.slice(8,instanceTn.length);
arrayPicsInstance[numInstanceTn] = thumbnailName;
loaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
loaderThumbnail.load(new URLRequest(thumbnailURL),loaderContext); //chargement de l´image
}
}
private function onThumbnailLoaded(evt:Event):void
{
if (containerThumbnails.contains(messageLoadingTn)) //si le conteneur de vignettes contient le message de chargement
{
containerThumbnails.removeChild(messageLoadingTn); //alors il est supprimé de l´interface
}
containerThumbnails.addEventListener(Event.ENTER_FRAME, onMoveThumbnails);
containerThumbnails.addEventListener(Event.ADDED, onThumbnailAdded); //abonnement du conteneur des vignettes à l´événement Event.ADDED
var loaderThumbnail:Loader = evt.target.loader; //conteneur de l´image
ratioTn = loaderThumbnail.height / heightThumbnail; //ratio pour le redimensionnement des images
loaderThumbnail.width /= ratioTn; //largeur de la vignette
loaderThumbnail.height /= ratioTn; //hauteur de la vignette
containerThumbnails.addChild(loaderThumbnail); //ajout de la vignette dans le conteneur
}
//thumbnails position
private function onThumbnailAdded(evt:Event):void
{
var loaderThumbnail:Loader = evt.target as Loader; //la vignette qui est ajoutée
var containerTn:Sprite = evt.currentTarget as Sprite; //le conteneur des vignettes
containerTn.buttonMode = true ;
var index:int = containerTn.getChildIndex(loaderThumbnail); //l´index dans la liste d´affichage
if(index != 0) //si la vignette n´est pas la première
{
var previousX:Number = containerTn.getChildAt(index - 1).getBounds(containerTn).right; //coordonnée X du côtét droit de la vignette précédemment ajoutée
loaderThumbnail.x = previousX + gapThumbnails; //positionnement de la vignette 10 pixels après la vignette précédente
}
loaderThumbnail.addEventListener(MouseEvent.MOUSE_OVER, onThumbnailOver);
//loaderThumbnail.addEventListener(MouseEvent.MOUSE_OUT, onThumbnailOut);
loaderThumbnail.addEventListener(MouseEvent.CLICK, onThumbnailPress);
}
Thanks for your help.