import com.greensock.*;//personnellement j'utilise les tweener qui sont bien plus performants //______________________________ variables var monXML:XML;//il faut déclarer ton xml en dehors de toute fonction pour qu'il soit accessible var nmax:int;//nombre total d'image var nb:int=0;//utiliser dans l'incrémentation var numeroImage:int=0;//ici ton erreur (de débutant) est de ne pas savoir qu'un XML commence au rang "0" //______________________________ initialisation //alors c'est vraimment le bordel il y en a de partout, il faut ordonner ton code var texteAlt:TextField=new TextField(); texteAlt.x=265; texteAlt.y=454; //text.height=???? il plus que conseiller de le prciser sinon tu aura la valeur par défaut //texteAlt.width=???? idem var texteTxt:TextField=new TextField(); texteTxt.x=400; texteTxt.y=690; //text.height=???? il plus que conseiller de le prciser sinon tu aura la valeur par défaut //texteAlt.width=???? idem texteAlt.selectable=texteTxt.selectable=false;//pense a préciser si "true" ou "false" texteAlt.antiAliasType=texteTxt.antiAliasType="advanced";//a ne pas oublier texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT; var btPrecedente:BtGauche=new BtGauche(); btPrecedente.val=-1;//utiliser pour gérer "numeroImage"(marche si la classe de base de BtGauche est Movieclip, sinon d'autre moyen sont possible) btPrecedente.x=178.4; btPrecedente.y=246.7; var btSuivante:BtDroite=new BtDroite(); btSuivante.val=1;//utiliser pour gérer "numeroImage" (idem) btSuivante.x=215.8; btSuivante.y=368.1; btPrecedente.alpha=btSuivante.alpha=0.5; btPrecedente.buttonMode=btSuivante.buttonMode=true;//c'est ici qu'il faut le placer et pas dans le mouseover var Cadrephoto:Sprite=new Sprite();//on va faire un conteneur pour toute les photos cadrePhoto.x=500; cadrePhoto.y=125; cadrePhoto.alpha=0; //tu les inscrira dans l'ordre que tu souhaites pour l'affichage addChild(texteAlt); addChild(texteTxt); addChild(btPrecedente); addChild(btSuivante); addChild(cadrePhoto); var chargeurXML:URLLoader=new URLLoader(); chargeurXML.addEventListener(Event.COMPLETE,XMLCharge);//ajout de l'ecouteur avant de charger chargeurXML.load(new URLRequest("DosXML/paysage.xml")); //______________________________ event private function XMLCharge(evt:Event):void{// ne pas oublier le "void" si la fonction ne renvoie rien if(evt.target!=null){ evt.target.removeEventListener(Event.COMPLETE,XMLCharge);// il ne faut pas oublier d'enlevef les ecouteur d'événement pour maitriser les ressources physiques monXML=new XML(evt.target.data); monXML.ignoreWhite=true; acquerir();// on indique ici un chainage d'action a effectuer } } private function imageChargee(evt:Event):void{// ne pas oublier le "void" si la fonction ne renvoie rien evt.target.removeEventListener(Event.COMPLETE,imageChargee);// il ne faut pas oublier d'enlevef les ecouteur d'événement pour maitriser les ressources physiques if(nb==0){animer(0);}//je place pas tout le code mais je fais appelle a une fonction qui est appeler lors des actions sur les boutons nb++; if(nb==nmax){ //une fois que tout est charger on ajoute les ecouteur sur les boutons et seulement le minimum pour une bonne gestion des ressources btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer); btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer); } } private function naviguer(evt:MouseEvent):void{ switch(evt.type){ case "mouseOver": evt.currentTarget.alpha=0; evt.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,naviguer); evt.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN,naviguer); break; case "mouseOut": evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer); evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer); evt.currentTarget.alpha=0.5; break; case "mouseDown" : evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer); evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer); masquer(numeroImage); var n:int=numeroImage+evt.currentTarget.val; if(n<0){n=nmax-1;}else{if(n=nmax){n=0;}} numeroImage=n; animer(numeroImage); break; } } //______________________________ private private function acquerir():void{ //de facon générale il est préférable de charger toute tes photos dès le debut au lieu de faire une requete http a chaque action sur le bouton nmax=monXML.image.length();//on sort la déclaration de variable de la boucle pour ne pas les recalculer a chaque incrémentation var photo:Loader;//ne pas oublier de typer for(var i:int=0;i<nmax;i++){ photo=new Loader(); photo.name="p"+i;//on les nomme de facon a les cibler facilement photo.visible=false; cadrePhoto.addChild(photo); photo.contentLoaderInfo.addEventListener(Event.COMPLETE,imageChargee);//ajout de l'ecouteur avant de charger photo.load(new URLRequest(monXML.image[i].@url));//l'url des image doit etre dans le xml sinon ce n'est pas du tout dynamique } } private function formater(pCible:TextField,pSize:int):void{ //c'est un exemple pour montrer que l'on peut travailler uniquement sur ce qui est différent var Style:TextFormat=new TextFormat();//attention oublie parenthèses Style.color=0x999999; Style.size=pSize; Style.font="Brush Script Std"; Style.align="left"; pCible.setTextFormat(Style); } private function animer(pVal:int):void{ var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader; photo.visible=true; texteAlt.text=monXML.image[pVal].@alt; formater(texteAlt,14); texteTxt.text=monXML.image[pVal].@txt; formater(texteTxt,20); TweenMax.to(cadrePhoto,1,{alpha:1}); } private function masquer(pVal:int):void{ TweenMax.killChildTweensOf(this,true);//pour les tweenMax je te laisse vérifier var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader; photo.visible=false; }
package{ import flash.display.*; import flash.text.*; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLLoader; import flash.net.URLRequest; import com.greensock.*; public class Main{ private var monXML:XML; private var nmax:int; private var nb:int=0; private var numeroImage:int=0; private var texteAlt:TextField=new TextField(); private var texteTxt:TextField=new TextField(); private var var Cadrephoto:Sprite=new Sprite(); public function Main():void{ texteAlt.x=265; texteAlt.y=454; //texteAlt.height=; //texteAlt.width=; texteTxt.x=400; texteTxt.y=690; //texteTxt.height=; //texteTxt.width=; texteAlt.selectable=texteTxt.selectable=false; texteAlt.antiAliasType=texteTxt.antiAliasType="advanced"; texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT; var btPrecedente:BtGauche=new BtGauche(); btPrecedente.val=-1; btPrecedente.x=178.4; btPrecedente.y=246.7; var btSuivante:BtDroite=new BtDroite(); btSuivante.val=1; btSuivante.x=215.8; btSuivante.y=368.1; btPrecedente.alpha=btSuivante.alpha=0.5; btPrecedente.buttonMode=btSuivante.buttonMode=true; cadrePhoto.x=500; cadrePhoto.y=125; cadrePhoto.alpha=0; addChild(texteAlt); addChild(texteTxt); addChild(btPrecedente); addChild(btSuivante); addChild(cadrePhoto); var chargeurXML:URLLoader=new URLLoader(); chargeurXML.addEventListener(Event.COMPLETE,XMLCharge); chargeurXML.load(new URLRequest("DosXML/paysage.xml")); } //______________________________ event private function XMLCharge(evt:Event):void{ if(evt.target!=null){ evt.target.removeEventListener(Event.COMPLETE,XMLCharge); monXML=new XML(evt.target.data); monXML.ignoreWhite=true; acquerir(); } } private function imageChargee(evt:Event):void{ evt.target.removeEventListener(Event.COMPLETE,imageChargee); if(nb==0){animer(0);} nb++; if(nb==nmax){btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer);btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer);} } private function naviguer(evt:MouseEvent):void{ switch(evt.type){ case "mouseOver": evt.currentTarget.alpha=0; evt.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,naviguer); evt.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN,naviguer); break; case "mouseOut": evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer); evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer); evt.currentTarget.alpha=0.5; break; case "mouseDown" : evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer); evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer); masquer(numeroImage); var n:int=numeroImage+evt.currentTarget.val; if(n<0){n=nmax-1;}else{if(n==nmax){n=0;}} numeroImage=n; animer(numeroImage); break; } } //______________________________ private private function acquerir():void{ nmax=monXML.image.length(); var photo:Loader; for(var i:int=0;i<nmax;i++){ photo=new Loader(); photo.name="p"+i; photo.visible=false; cadrePhoto.addChild(photo); photo.contentLoaderInfo.addEventListener(Event.COMPLETE,imageChargee); photo.load(new URLRequest(monXML.image[i].@url)); } } private function formater(pCible:TextField,pSize:int):void{ var Style:TextFormat=new TextFormat(); Style.color=0x999999; Style.size=pSize; Style.font="Brush Script Std"; Style.align="left"; pCible.setTextFormat(Style); } private function animer(pVal:int):void{ var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader; photo.visible=true; texteAlt.text=monXML.image[pVal].@alt; formater(texteAlt,14); texteTxt.text=monXML.image[pVal].@txt; formater(texteTxt,20); TweenMax.to(cadrePhoto,1,{alpha:1}); } private function masquer(pVal:int):void{ TweenMax.killChildTweensOf(this,true); var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader; photo.visible=false; } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionpublic class Main{ private var monXML:XML; private var nmax:int; private var nb:int=0; private var numeroImage:int=0; private var texteAlt:TextField=new TextField(); private var texteTxt:TextField=new TextField(); private var Cadrephoto:Sprite=new Sprite(); private var btPrecedente:BtGauche=new BtGauche(); private var var btSuivante:BtDroite=new BtDroite(); public function Main():void{ texteAlt.x=265; texteAlt.y=454; //texteAlt.height=; //texteAlt.width=; texteTxt.x=400; texteTxt.y=690; //texteTxt.height=; //texteTxt.width=; texteAlt.selectable=texteTxt.selectable=false; texteAlt.antiAliasType=texteTxt.antiAliasType="advanced"; texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT; btPrecedente.val=-1; btPrecedente.x=178.4; btPrecedente.y=246.7; btSuivante.val=1; btSuivante.x=215.8; btSuivante.y=368.1; btPrecedente.alpha=btSuivante.alpha=0.5; btPrecedente.buttonMode=btSuivante.buttonMode=true;