//tu peux cumuler les valeurs dans une meme egalité var formatTitre:TextFormat=new TextFormat(); var formatSousTitre:TextFormat=new TextFormat(); formatTitre.font=formatSousTitre.font=myFont.fontName; formatTitre.color=formatSousTitre.color=0xFFFFFF; formatTitre.size=16; formatSousTitre.size=12; formatTitre.align=formatSousTitre.font=TextFormatAlign.CENTER; formatTitre.kerning=formatSousTitre.kerning=true; /*non utilisé dans le bout de code fourni var menuEnCours:String=new String(); var menuActif:String="menus-fermes"; var scrolling:Boolean=false; var mPosX:Number=25; var yOverWatch:Number; var scrollEnCours:Number; var tween:Number=60; /* inutil voir plus loin var nTitre:int=0; var nSousTitre:int=0; var stockXmlSousMenu:XML; var titreList:XMLList; var sousTitreList:XMLList; var yMenu:Array=new Array(); var hMenu:Array=new Array(); var aMenu:Array=new Array(); var aSeparation:Array=new Array(); */ var mPosW:Number=203; var mPosY:Number=80; //si les valeur suivante ne sont pas amenés a tre modifier il est d'usage d'utiliser des constantes et de les typer int. const margeMenu:int=20; const margeSousMenuP:int=30; const margeSousMenuG:int=50; const tailleScroll:int=82; //vue la quantité de array, je met ma main au feu que tu ne connais pas les possibillités d'un array surtout si tu l'utilise comme un vector var aSousMenu:Array=new Array(); var ySousMenu:Array=new Array(); var mArray:Array=new Array(); var sArray:Array=new Array(); var stockXmlMenu:XML; //il ne faut pas oublier les parenthèses(); var curseur:Cursor=new Cursor(); var container:Sprite=new Sprite(); container.alpha=curseur.alpha=0; container.x=640; var cMenu:MovieClip=new MovieClip(); cMenu.x=160; var cSousMenu:MovieClip=new MovieClip(); var bounds:Rectangle; var overWatchTheFilm:OverWatchOrigin=new OverWatchOrigin(); addChild(curseur); container.addChild(cMenu); addChild(container); /* je comprends pas pourquoi tout mettre sur un seul xml pose pb. <ele>le contenu de ton xml the_jewel</ele> <ele>le contenu de ton xml the_line</ele> <ele>le contenu de ton xml the_secret</ele> reste qu'a stocker une variable indiquant quel noeud ele est actuellemeny utilisé par exemple val:int=1; avec comme ciblage stockXmlMenu.ele[val].menu.etc.... */ var val:int=0; private function xmlContent():void{ var loadXml:URLLoader=new URLLoader(); var xml:URLRequest=new URLRequest("xml_complet"); loadXml.addEventListener(Event.COMPLETE,xmlLoadComplete); loadXml.load(xml); } function xmlLoadComplete(e:Event):void{ //tu peut suppprimer l'eventListener vu que tu peut faire sur un seul xml stockXmlMenu=new XML(e.target.data); //pas sur que l'utilsation de xmlList se jusitfie //titreList=stockXmlMenu.menu.submenu.titre; //sousTitreList=stockXmlMenu.menu.submenu.contenu; //alors la tu fais des incrémentations complétement inutile //un xml a des propriété bien utile pour peu qu'il soit bien construit //par exemple trace(stockXmlMenu.ele[val].menu.length); //te donneras directement le nombre total de noeuds //for each (var titre:XML in titreList){nTitre++;} //for each (var sousTitre:XML in sousTitreList){nSousTitre++;} menu(); } function menu(){ //n'ayant pas l'xml de dispo, je me base uniquement sur ce que tu as ecrit, mais c'est clairement faux car cela signifierai que ta balise menu est inutile var imax:int=stockXmlMenu.ele[val].menu.submenu.length; for(var i=0; i=22){titreText.height=42;}else{titreText.height=20;} titreText.autoSize=TextFieldAutoSize.LEFT; // la gestion des positions en y peut etre faite très différemment, mais bon titreText.y=mPosY; mPosY=(titreText.y+titreText.height)+margeMenu; var separation:Shape=new Shape(); //il est préféranle de nommer les éléments créer dans une boucle separation.name="sep"+i; separation.graphics.beginFill(0xFFFFFF); separation.graphics.drawRect(0,0,23,1); separation.x=(cMenu.width/2)-22; separation.y=titreText.y-9; /*mort de rire, vive les array inutiles a t'on avis si l'on fait: var ptitre:Texfield=aMenu[0] as TextField; trace(pTitre.y); on aura pas la meme chose que si on fait trace(aMenu[0]): ben si? quand tu construit un tableau d'objet, ils garde leur propriétés */ //yMenu.push(titreText.y); //hMenu.push(titreText.height); //maintenant quel est l'interet de mettre les éléments titretetxt et separateur dans un array? // ben a rien non? //aMenu.push(titreText); //aSeparation.push(separation); cMenu.addChild(separation); cMenu.addChild(titreText); } // et oui sa marche var psep:Shape=cMenu.getChildByName("sep0"); psep.alpha=0; cMenu.buttonMode=true; cMenu.addEventListener(MouseEvent.CLICK,cMenuClick); cMenu.addEventListener(MouseEvent.MOUSE_OVER,cMenuOver); cMenu.addEventListener(MouseEvent.MOUSE_OUT,cMenuOut); //a partir de la je te laisse faire mais en gros: //tu peux gérer tes sousmenu directement dans ta boucle menu au lieu de refaire une fonction // et tout comme mes correctifs précédent tu peux fiir de faire sauter tout tes arrays et un paquet d'autre chose inutil sousMenu(); } function sousMenu():void { container.addChildAt(cSousMenu, 0); for(var j=0; j<=(nSousTitre-1); j++) { var sousTitreText:TextField=new TextField(); sousTitreText.defaultTextFormat=formatSousTitre; sousTitreText.htmlText=sousTitreList[j]; sousTitreText.name="sousTitre"+j; sousTitreText.selectable=false; sousTitreText.mouseWheelEnabled=false; sousTitreText.wordWrap=true; sousTitreText.embedFonts=true; sousTitreText.width=283; sousTitreText.height=102; aSousMenu.push(sousTitreText); if (hMenu[j] == 20) { sousTitreText.y=yMenu[j]+margeSousMenuP; } else { sousTitreText.y=yMenu[j]+margeSousMenuG; } ySousMenu.push(sousTitreText.y); var masque:Masque=new Masque(); masque.name="masque"+j; mArray.push(masque); masque.y=sousTitreText.y; sousTitreText.x=masque.x=-13; sousTitreText.mask=masque; mPosY += 125; var scrollBar:Scroll=new Scroll(); scrollBar.y=sousTitreText.y; scrollBar.x=(sousTitreText.x + sousTitreText.width); scrollBar.alpha=0; sArray.push(scrollBar); bounds=new Rectangle(scrollBar.scrollBtn.x, scrollBar.scrollBtn.y, 0, tailleScroll); cSousMenu.addChild(scrollBar); cSousMenu.x=((cMenu.width/2)+(cSousMenu.width/2))-130; cSousMenu.addChild(sousTitreText); cSousMenu.addChild(masque); } switch(etatNav) { case "the-jewel": overWatchTheFilm.alpha=0; overWatchTheFilm.x=cSousMenu.x+65; overWatchTheFilm.gotoAndStop(1); cSousMenu.addChild(overWatchTheFilm); container.y=(((contentJewel.height/2)+(container.height/2))+200); TweenMax.to(container, 2,{alpha:1, y:(((contentJewel.height/2)+(container.height/2))-55)}); break; case "the-secret": overWatchTheFilm.alpha=0; overWatchTheFilm.x=cSousMenu.x+65; overWatchTheFilm.gotoAndStop(2); cSousMenu.addChild(overWatchTheFilm); container.y=((contentJewel.height/2)+(container.height/2)); TweenMax.to(container, 2,{alpha:1, y:(((contentJewel.height/2)+(container.height/2))-145)}); break; case "the-line": container.y=(((contentJewel.height/2)+(container.height/2))+200); TweenMax.to(container, 2,{alpha:1, y:(((contentJewel.height/2)+(container.height/2))-65)}); break; } }
for each (var titre:XML in titreList) { nTitre++; } for each (var sousTitre:XML in sousTitreList) { nSousTitre++; }
yMenu.length = 0; aMenu.length = 0; hMenu.length = 0; aSousMenu.length = 0; ySousMenu.length = 0; aSeparation.length = 0; mArray.length = 0; sArray.length = 0; removeChild(container);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionwhile(cMenu.numChildren>0) { cMenu.removeChildAt(0); } while(cSousMenu.numChildren>0) { cSousMenu.removeChildAt(0); }