1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
| import flash.net.URLLoader;
import flash.net.URLRequest;
import fl.containers.UILoader;
import fl.controls.ProgressBar;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.events.*;
import flash.text.*;
import flash.filters.*;
//Constantes
var dossierImage:String = 'images/';
var dossierImageMini:String = 'images/min/';
//Chargeur qui téléchargera notre fichier XML
var chargeur:URLLoader = new URLLoader ();
//objet URLRequest qui contient l'url du fichier XML:
var adresse:URLRequest = new URLRequest ("galerie.xml");
chargeur.load(adresse);
chargeur.addEventListener(Event.COMPLETE, finDuChargementXML);
//Variable contenant le texte alternatif
var alt:String;
/*Style utilisé pour le texte Alternatif*/
var formatTitre:TextFormat = new TextFormat;
formatTitre.color = 0x000000;
formatTitre.size = 18;
formatTitre.font = 'cambria';
formatTitre.align = 'left';
//Champ texte pour le texte alternatif
var texteAlt:TextField = new TextField();
texteAlt.text = '';
texteAlt.x = 325;
texteAlt.y = 425;
texteAlt.width = 400;
this.addChild(texteAlt);
//Champ texte pour le message de chargement
var chargement:TextField = new TextField();
chargement.text = 'Chargement en cours...';
chargement.setTextFormat(formatTitre);
chargement.width = 200;
chargement.x = 350;
chargement.y = 200;
this.addChild(chargement);
/*Une fois que le fichier XML es.addChild()t chargé...*/
function finDuChargementXML(evt:Event):void{
//Objet XML
var monXML:XML = new XML(evt.target.data);
//UILoader qui contiendra l'image originale
var photoPrincipale:UILoader = new UILoader();
photoPrincipale.source = dossierImage+monXML.image[1].attribute("src");
photoPrincipale.x = 280;
photoPrincipale.y = 10;
photoPrincipale.scaleContent = false;
var translation:Array = [photoPrincipale.x, photoPrincipale.x+ 100];
//Variable qui contiendra l'image qui est selectionnée
var select:String;
texteAlt.text = monXML.image[1].attribute("alt");
texteAlt.setTextFormat(formatTitre);
//On attache le Loader à la scene
this.addChild(photoPrincipale);
/*Pour les miniatures*/
for(var i:String in monXML.image) {
var uil:UILoader = new UILoader();
uil.source = dossierImageMini+monXML.image[i].attribute("src");
uil.buttonMode=true;
uil.name = i;
uil.x = 10;
uil.y = 10;
uil.y += int((int(i)/3))*90;
if(int(i)%3!=0){
uil.x += (int(i)%3)*90;
}
uil.width = uil.height = 70;
uil.alpha = 0.5;
uil.scaleContent= true;
uil.autoLoad = true;
//Les écouteurs sur les miniatures
uil.addEventListener(MouseEvent.CLICK,clicImage);
uil.addEventListener(MouseEvent.MOUSE_OVER,overImage);
uil.addEventListener(MouseEvent.MOUSE_OUT,outImage);
this.addChild(uil);
}
/*Quand on clique sur une miniature...*/
function clicImage(e:Event):void{
//e.currentTarget.name correspond à la position de l'image
//Si l'image sur laquelle on a cliquée est déjà selectionnée, il ne se passe rien....
if(select == monXML.image[e.currentTarget.name].attribute("src")){
return;
}
select = monXML.image[e.currentTarget.name].attribute("src");
alt = monXML.image[e.currentTarget.name].attribute("alt");
var myTweentText:Tween = new Tween(texteAlt, "alpha", Strong.easeOut, 1, 0, 1, true);
var myTweenA:Tween = new Tween(photoPrincipale, "alpha", Strong.easeOut, 1, 0, 1, true);
var myTweenPPW:Tween = new Tween(photoPrincipale, "x", Strong.easeIn, translation[0], translation[1],1, true);
var myTweenPPA:Tween = new Tween(photoPrincipale, "alpha", Strong.easeIn, 1, 0, 1, true);
myTweenA.addEventListener(TweenEvent.MOTION_FINISH, changeImage);
}
/*Quand on veut changer d'image (logiquement après avoir cliqué sur une miniature)*/
function changeImage(e:Event):void{
//On change la source de l'image
photoPrincipale.source = dossierImage+select;
//On change le texte descriptif
texteAlt.text = alt;
texteAlt.setTextFormat(formatTitre);
//Et la photo arrive de façon élégante
var myTweenPPA2:Tween = new Tween(photoPrincipale, "alpha", Strong.easeOut, 0, 1, 1, true);
var myTweenPPW2:Tween = new Tween(photoPrincipale, "x", Strong.easeOut, translation[1], translation[0], 1, true);
var myTweentText2:Tween = new Tween(texteAlt, "alpha", Strong.easeOut, 0, 1, 1, true);
}
/*Quand on passe la souris sur une miniature...*/
function overImage(e:Event):void{
//Ombre sur miniatures
var monOmbre:DropShadowFilter = new DropShadowFilter();
monOmbre.distance = 3;
monOmbre.color = 0x000000;
monOmbre.blurX = 5;
monOmbre.blurY = 5;
monOmbre.quality = 3;
e.currentTarget.filters = [monOmbre];
//Effets cools de transitions
var myTweenMA2:Tween = new Tween(e.currentTarget, "alpha", Strong.easeOut, 0.5, 1, 1, true);
var myTweenMW2:Tween = new Tween(e.currentTarget, "width", Elastic.easeOut, e.currentTarget.width, 75, 1, true);
var myTweenMH2:Tween = new Tween(e.currentTarget, "height", Elastic.easeOut, e.currentTarget.height, 75, 1, true);
}
/*Quand on quitte la miniature*/
function outImage(e:Event):void{
//Ombre sur miniatures
var monOmbre:DropShadowFilter = new DropShadowFilter();
monOmbre.distance = 0;
monOmbre.color = 0x000000;
monOmbre.blurX = 0;
monOmbre.blurY = 0;
monOmbre.quality = 3;
e.currentTarget.filters = [monOmbre];
//Effets cools de transitions
var myTweenMA:Tween = new Tween(e.currentTarget, "alpha", Strong.easeOut, 1, 0.5, 1, true);
var myTweenMW:Tween = new Tween(e.currentTarget, "width", Elastic.easeOut, e.currentTarget.width, 70, 1, true);
var myTweenMH:Tween = new Tween(e.currentTarget, "height", Elastic.easeOut, e.currentTarget.height, 70, 1, true);
}
} |
Partager