AS3 et addChild

Fermé
zola13 Messages postés 48 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 27 août 2015 - 8 déc. 2011 à 10:45
Bonjour à tous !

Voilà, je débute en flash et en AS3 et j'ai repris une fonction qui affiche un diaporama. Seulement problème, j'aimerais que le diaporama apparaisse lors d'un clic sur un lien. J'ai 4 elements dans la scène : photoPrincipale | uil (qui contient les miniatures) | chargement | texteAlt

Je pense que, pour faire ce que j'essaie de faire, je dois mettre ces 4 éléments dans un conteneur à l'aide de addChild et le faire apparaître en cliquant dessus, mais lorsque j'essaie de créer le conteneur, rien ne s'affiche

PS : le code que j'avais ajouté est mis en gras.

Merci d'avance pour votre aideee !

//Conteneur
var conteneur:Sprite = new Sprite();
conteneur.width = 710;
conteneur.height = 530;
this.addChild(conteneur);



//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 = 15;
formatTitre.font = 'arial';
formatTitre.align = 'center';

//Champ texte pour le texte alternatif
var texteAlt:TextField = new TextField();
texteAlt.text = '';
texteAlt.x = 130;
texteAlt.y = 190;
texteAlt.height = 30;
texteAlt.width = 550;
texteAlt.background = true;
texteAlt.backgroundColor = 0xffffff;
this.addChild(texteAlt); //remplacé par conteneur.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 = 290;
chargement.alpha=0.5;
this.addChild(chargement); //remplacé par conteneur.addChild(chargement);

/*Une fois que le fichier XML est 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 = 130;
photoPrincipale.y = 215;
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); // remplacé par conteneur.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 = 145;
uil.y = 75;
uil.y += int((int(i)/6))*50;
if(int(i)%6!=0){
uil.x += (int(i)%6)*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); // remplacé par conteneur.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 myTweentText4:Tween = new Tween(texteAlt, "x", Strong.easeIn, translation[0], translation[1],1, true);
var myTweentText5:Tween = new Tween(texteAlt, "alpha", Strong.easeIn, 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);
myTweentText.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);
var myTweentText3:Tween = new Tween(texteAlt, "x", Strong.easeOut, translation[1], translation[0], 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 = 0xAAAAAA;
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 = 0x888888;
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);

}
}