Den består af en main film, hvor hver indholdsside er en swf-film som loades.
Når man klikker på et menupunkt, ændres knappen, så man kan se hvilken side man er inde på.
Lige nu ligger venstre menuen på alle indholdssiderne, men det gør, at den blinker, når siderne skiftes.
Istedet kunne jeg godt tænke mig at have hele menuen liggende i mainfilmen. Jeg forestiller mig noget med et actionscript, hvor der sendes en parameter videre, hvis der er trykket på knappen.
Hvis parameteren er =1 skiftes knap 1 ud med knap 1 over, og hvis der klikkes på en ny knap, skifter den tilbage til knap 1 igen... Og den næste knap skifter...
Er der nogen der vil hjælpe mig med at stykke det sammen?
Det tomme movieclip du opretter er til at loade din eksterne swf'er ind i. Det er knapperne der skifter mellem frame 1 og 2. Det er det samme movieclip som bliver genbrugt til alle dine knapper. Movieclippet ligger i dit library (Ctrl+L) og bliver via actionscript placeret på scenen.
Jeg har prøvet at tilføje lidt kommentare til koden:
// variabel til navnet på det valgte punkt - tom fra starten var active_mc; // array med menupunkterne var menu_array = ["Home", "Om butikken", "Produkter", "Nyheder", "Links", "Kontakt"]; // opret et movieclip til at loade de forskellige punkter ind i this.createEmptyMovieClip("holder_mc", 50); // bliver afviklet ved rollOver på en knap over = function () { // knappen går til frame2 this.gotoAndStop(2); }; // bliver afviklet ved rollOut på en knap out = function () { // knappen går til frame1 this.gotoAndStop(1); }; // bliver afviklet ved onRelease på en knap rel = function () { // det aktive movieclip bliver enabledet igen active_mc.enabled = true; // det aktive movieclip sendes til frame1 active_mc.gotoAndStop(1); // knappen disables this.enabled = false; // knappen sendes til frame2 this.gotoAndStop(2); // det aktive movieclip sættes lig med knappen active_mc = this; // loader en swf ind i holder_mc movieclippet - f.eks. produkter.swf holder_mc.loadMovie(menu_array[this.num]+".swf"); }; // vi looper gennem alle punkterne i vores menu array for (var i = 0; i<menu_array.length; i++) { // vi attacher vores knap movieclip fra library'et via linkage identifieren // knappens y placering bestemmes ud fra i // der angives hvilke funktioner der skal køres ved onRollOver, onRollOut, onRelease knap_mc = this.attachMovie("knap", "knap"+i, i, {_y:20*i, num:i, onRollOver:over, onRollOut:out, onRelease:rel}); // vi sætter teksten på label_txt som ligger inde i knap movieclippet knap_mc.label_txt.text = menu_array[i]; } // vi sætter knap0 (home) til at være det valgte punkt this.knap0.onRelease();
Scriptet placerer du frame1 i din film. Kig på mit eksempel hvis du er i tvivl.
Du skal ikke tænkte så meget over det med frame 1 og 2. Det eneste der egentlig er i det, er at i frame1 har knappen grå baggrund og i frame2 er baggrunden brun.
Jeg tror at det er forvirrer mig lidt er, at der kun er een frame i det eksempel du har lagt op... Kalder scriptet selv movieclippet, eller skal jeg lægge det på scenen manuelt?
I mit eksempel skal scenen være helt tom. De elementer der bruges bliver hentet v.h.a. scriptet.
Det er koden her der placere knapperne på scenen: knap_mc = this.attachMovie("knap", "knap"+i, i, {_y:20*i, num:i, onRollOver:over, onRollOut:out, onRelease:rel});
I forenklet for ser koden sådan her ud: attachMovie("knap", "knap0", 0)
Og den betyder ganske enkelt: Hent elementet 'knap' fra library'et, giv det navnet 'knap0' og placer det på scenen i dybden 0.
Prøv det her: Åben dit library (Ctrl+L). Højreklik på knap movieclippet. Vælg Linkage... Sørg for at Export for ActionScript er slået til. Sørg for at identifier navnet er knap.
Flash MX har åbenbart et problem med min kode, nærmere bestemt linien hvor jeg attacher knapperne. Derfor må vi prøve om vi kan omskrive koden så det virker. Eftersom jeg ikke har Flash MX bliver du selv nødt til at teste det. Når flash ikke længere tracer undefined skulle det virke.
Prøv med koden her og fortæl mig hvad den tracer:
var active_mc; var menu_array = ["Home", "Om butikken", "Produkter", "Nyheder", "Links", "Kontakt"]; this.createEmptyMovieClip("holder_mc", 50); over = function () { this.gotoAndStop(2);}; out = function () { this.gotoAndStop(1);}; rel = function () { active_mc.enabled = true;active_mc.gotoAndStop(1);this.enabled = false;this.gotoAndStop(2);active_mc = this;}; for (var i = 0; i<menu_array.length; i++) { knap_mc = this.attachMovie("knap", "knap"+i, i); trace(knap_mc) knap_mc.label_txt.text = menu_array[i]; } this.knap0.onRelease();
Nu har jeg fået løst problemet - fandt en tutorial på nettet, men samme problemstilling. Men du har snart brugt så lang tid på spørgsmålet, at jeg gerne vil give dig nogle points alligevel - men så må du lige oprette et svar :)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.