Bonjour à tous,
je travaille actuellement sur une gallerie photos.
J'affiche les miniatures qui permettront par la suite de voir l'image voulue en grand, ceci à partir d'un fichier XML.
J'ai mis un scroll vertical afin de pouvoir voir toutes les miniatures.
Mon scroll marche correctement néanmoins il ne me permet pas de voir toutes les miniatures.
Voici le code:
import fl.containers.UILoader;
import caurina.transitions.*;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import com.greensock.TweenMax;
var urlRequest:URLRequest = new URLRequest("pics.xml");
var urlLoader:URLLoader = new URLLoader();
var myXML:XML = new XML();
var xmlList:XMLList;
myXML.ignoreWhitespace = true;
urlLoader.addEventListener(Event.COMPLETE,fileLoaded);
urlLoader.load(urlRequest);
var arrayURL:Array = new Array();
var arrayName:Array = new Array();
var holderArray:Array = new Array();
var nrColumns:uint = 5;
var thumb:Thumbnail;
var photoContainer:Sprite = new Sprite();
addChild(photoContainer);
photoContainer.mask=thumb_holder;
function fileLoaded(event:Event):void {
myXML = XML(event.target.data);
xmlList = myXML.children();
for (var i:int=0; i<xmlList.length(); i++) {
var picURL:String = xmlList[i].url;
var picName:String = xmlList[i].big_url;
arrayURL.push(picURL);
arrayName.push(picName);
holderArray[i] = new Thumbnail(arrayURL[i],i,arrayName[i]);
holderArray[i].name = arrayName[i];
holderArray[i].buttonMode = true;
holderArray[i].addEventListener(MouseEvent.CLICK,onClick);
if (i<nrColumns) {
holderArray[i].y = 65;
holderArray[i].x = i*110+65;
}
else {
holderArray[i].y = holderArray[i-nrColumns].y+110;
holderArray[i].x = holderArray[i-nrColumns].x;
}
photoContainer.addChild(holderArray[i]);
}
}
function thumbLoaded(e:Event):void {
var my_thumb:Loader = Loader(e.target.loader);
photoContainer.addChild(my_thumb);
my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE, thumbLoaded);
}
//----handles the Click event added to the thumbnails--
function onClick(event:MouseEvent):void {
var test = event.currentTarget.name;
trace(test);
//Tweener.addTween(photoContainer, {x:-650, time:1, transition:"easeInElastic"});
//Tweener.addTween(photoContainer, {alpha:0, time:1, transition:"linear"});
}
var bounds:Rectangle;
var startY:Number;
var contentY:Number;
scrollHandle.addEventListener(MouseEvent.MOUSE_DOWN, drag);
scrollBar.addEventListener(MouseEvent.CLICK, tween);
addEventListener(Event.ENTER_FRAME, moveBox);
startY = scrollHandle.y;
contentY = photoContainer.y;
bounds = new Rectangle(scrollHandle.x, scrollHandle.y, 0, scrollBar.height - (scrollHandle.height + 4));
function tween(e:MouseEvent):void{
var mousePos:Number = mouseX;
if(mousePos > (scrollBar.y + scrollBar.height) - (scrollHandle.height + 4)){
mousePos = (scrollBar.y + scrollBar.height) - (scrollHandle.height + 4);
}
Tweener.addTween(scrollHandle, {y: mousePos, time: 1});
}
function drag(e:MouseEvent):void{
scrollHandle.startDrag(false, bounds);
scrollHandle.gotoAndStop(2);
scrollHandle.removeEventListener(MouseEvent.MOUSE_DOWN, drag);
addEventListener(MouseEvent.MOUSE_UP, stopdrag);
}
function stopdrag(e:MouseEvent):void{
scrollHandle.stopDrag();
scrollHandle.gotoAndStop(1);
scrollHandle.addEventListener(MouseEvent.MOUSE_DOWN, drag);
removeEventListener(MouseEvent.MOUSE_UP, stopdrag);
}
function moveBox(e:Event):void{
TweenMax.to(photoContainer, 2, {y: -((contentY - startY) + scrollHandle.y) / ((photoContainer.height - thumb_holder.height) / (scrollBar.height - scrollHandle.height))});
}
Je peux éventuellement fournir le fla.