menu = new XML(); menu.ignoreWhite = true; menu.load("menu.xml"); menu.onLoad = function(){ items = this.firstChild.childNodes; for(a = 0; a<= items.length-1; a++){ _root.attachMovie( "menuItem", "item"+a, a); _root["item"+a].nametxt.text = items[a].attributes.id; //Move the movie clip down per execution of the loop _root["item"+a]._x = 70*a; //Move the MC down by ½ its height so it is inside the stage. _root["item"+a]._x += 35; //Center the movie clip by making its x ½ its width _root["item"+a]._y = 12.5; _root["item"+a].itemUrl = items[a].attributes.theurl; _root["item"+a].onRelease = function(){ getURL(this.itemUrl, "_blank"); } } } Det fungere også fint, jeg har en Horisontal menu som ligner dette:
| MAIN | NEWS | PAINTING | PHOTOS | CASES | RADIO | FILM | men knapperne ER somsagt 70px lang, som jeg har lavet dem og indretter sig ikke efter textlængde som jo er optimalt.
Spørgsmål:
Hvordan får jeg den til selv at beregne hvor stor knappen skal være? så de lange ord(menupunkter) får den plads de skal bruge og de små, ikke efterlader masser af tom plads.
Eller... har du et link til ligepræsis en rigtig god XML baseret flash menu, som bare er god, og kan pilles ved, og er gratis?
Hejsa, nu har jeg jo ikke adgang til alle mc'erne så ved ikke om det her virker, men du kan bruge textWidth til at få bredden på et txt felt i pixels, så noget lign: menu.onLoad = function() { items = this.firstChild.childNodes; for (a=0; a<=items.length-1; a++) { _root.attachMovie("menuItem", "item"+a, a); _root["item"+a].nametxt.text = items[a].attributes.id; //gem bredden i txtWidth - vis det er as1.0 så fjerner du bare var og :number var txtWidth:Number=_root["item"+a].nametxt.textWidth
//først sætter vi lige bredden på den og laver den lidt bredere end den er så det hele kan være der _root["item"+a]._width=txtWidth+10; //Move the movie clip down per execution of the loop - men i stedet for fast værdi bruger vi txtWidth+10 igen _root["item"+a]._x = (txtWidth+10)*a; //Move the MC down by ½ its height so it is inside the stage. _root["item"+a]._x += 35; //Center the movie clip by making its x ½ its width _root["item"+a]._y = 12.5; _root["item"+a].itemUrl = items[a].attributes.theurl; _root["item"+a].onRelease = function() { getURL(this.itemUrl, "_blank"); }; } };
hmmm tal for svaret, men jeg kan desværre ikke få det til at funke... Du virker bedere til AS end jeg, har du evt en løsning på seperator stregen så den ikke er del af knapperne...? her er en URL til FLA og XML www.uvo.dk/download/flash_xml_menu.zip
jeg er ikke så god til XML indblandingen, eller det lidt vildere AS...
Havde lige lidt ekstra tid så ville lige kigge på den men kan ikke åbne fla filen, får unexspected file format, kan du prøve at uploade den igen, eller maile den på mail [a] martin-nielsen.com
Kiggede lige lidt emre på din kode og fixede lidt til, tror følgende vil klare det hele uden de store ændringer: menu.onLoad = function() { var items:String = this.firstChild.childNodes; var xpos:Number=20; //start position for navigationen x axen for (var a=0; a<items.length; a++) { _root.attachMovie("menuItem", "item"+a, a); _root["item"+a].nametxt.text = items[a].attributes.id; var txtWidth:Number=_root["item"+a].nametxt.textWidth //hent pixel bredden på menupunktet _root["item"+a]._x = xpos; //flyt menupunt til xpos xpos+=txtWidth+10; //tilføj bredden af texten + 10 til xpos så næste menupunkt kommer længere hen _root["item"+a]._y = 12.5; _root["item"+a].itemUrl = items[a].attributes.theurl; _root["item"+a].onRelease = function() { getURL(this.itemUrl, "_blank"); }; } };
Det eneste vi har gjort er at tilføje en variable som holder styr på hvor på x axen punktet skal være, og den ligger vi så tekstens bredde til ved hvert gennemløb i for løkken, på den måde skulle felterne gerne stå lige ved siden ad hinanden
Det er bare i orden, jeg smider lige et svar så kan du altid godkende eller afvise når du har fået testet den, af en eller anden grund modtager jeg ikke mail fra eksperten selvom jeg er sat til det så glemmer hurtigt hvilke spørgsmål jeg er med i
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.