Avatar billede clouise Nybegynder
01. september 2004 - 20:55 Der er 28 kommentarer

hjælp til menustruktur

Jeg er ved at lave en hjemmeside, som kan ses her:

http://www.clouise.dk/anytime/anytime.html

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?
Avatar billede thulstrup Nybegynder
01. september 2004 - 22:05 #1
Her er et hurtigt eksempel:

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;
    //holder_mc.loadMovie(menu_array[this.num]+".swf");
};
for (var i = 0; i<menu_array.length; i++) {
    knap_mc = this.attachMovie("knap", "knap"+i, i, {_y:20*i, num:i, onRollOver:over, onRollOut:out, onRelease:rel});
    knap_mc.label_txt.text = menu_array[i];
}
this.knap0.onRelease();


Du kan se og downloade eksemplet her:
overdose.dk/eksperten/spm535416/
overdose.dk/eksperten/spm535416/spm535416.fla
Avatar billede clouise Nybegynder
01. september 2004 - 22:19 #3
ok kigger lige på det...
Avatar billede clouise Nybegynder
01. september 2004 - 22:22 #4
hmm jeg kan ikke åbne filformatet...

Det er nok fordi jeg ikke har Flash proffesional...
Avatar billede thulstrup Nybegynder
01. september 2004 - 22:26 #5
Prøv igen, nu har jeg gemt den som en Flash MX fil.
Avatar billede clouise Nybegynder
01. september 2004 - 22:30 #6
nå kan jeg godt åbne eksemplet, men når jeg tester det i browseren er siden blank?
Avatar billede thulstrup Nybegynder
01. september 2004 - 22:35 #7
Har du downloadet mit eksempel eller lavet dit eget?
Avatar billede clouise Nybegynder
01. september 2004 - 22:36 #8
jeg er ikke helt med - jeg laver et nyt movieclip, men jeg går frem og tilbage imellem frame 1 og 2 hvor der skal ligge grafikstykker?
Avatar billede thulstrup Nybegynder
01. september 2004 - 22:57 #9
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();
Avatar billede clouise Nybegynder
01. september 2004 - 23:07 #10
hmm jeg forstår det stadig ikke helt...

Hvor skal dette script placeres henne?

Og så har jeg stadig ikke fanget hvad præcis det er, der bliver placeret på frame 1 og 2?
Avatar billede thulstrup Nybegynder
01. september 2004 - 23:26 #11
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.
Avatar billede clouise Nybegynder
02. september 2004 - 21:47 #12
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?
Avatar billede thulstrup Nybegynder
02. september 2004 - 21:58 #13
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.
Avatar billede clouise Nybegynder
02. september 2004 - 22:10 #14
ok så langt er jeg med...

men skal jeg gøre mere ved det eksempel du har sendt? Der sker nemlig ikke noget, når jeg tester det i browseren...
Avatar billede thulstrup Nybegynder
02. september 2004 - 22:19 #15
Øh...der sker ikke noget? Mener du at du slet ikke kan se flash filen? Hvad sker der når du tester det i flash?
Avatar billede clouise Nybegynder
02. september 2004 - 22:25 #16
øhh ja - jeg mener når jeg tester den i flash - så er siden blank
Avatar billede clouise Nybegynder
02. september 2004 - 22:26 #17
kan det være fordi knappen i dokumentet er hentet ind fra et andet dokument eller sådan noget?
Avatar billede thulstrup Nybegynder
02. september 2004 - 22:33 #18
Kan du se det eksempel jeg har lagt op?

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.
Avatar billede clouise Nybegynder
02. september 2004 - 22:49 #19
tjaa det hele ser rigtigt ud?
Avatar billede thulstrup Nybegynder
02. september 2004 - 23:01 #20
Prøv at trace om knapperne bliver tilføjet. Altså:

knap_mc = this.attachMovie("knap", "knap"+i, i, {_y:20*i, num:i, onRollOver:over, onRollOut:out, onRelease:rel});
trace(knap_mc)

Tryk ctrl+enter og se hvad flash siger.
Avatar billede clouise Nybegynder
02. september 2004 - 23:07 #21
jeg får seks beskeder hvor der står undefined
Avatar billede thulstrup Nybegynder
02. september 2004 - 23:24 #22
Så er det der det går galt. Måske det er fordi du bruger FlashMX.

Prøv at se hvad den udskriver her:
knap_mc = this.attachMovie("knap", "knap"+i, i);
trace(knap_mc)
Avatar billede clouise Nybegynder
02. september 2004 - 23:33 #23
sådan her?:

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, {_y:20*i, num:i, onRollOver:over, onRollOut:out, onRelease:rel});
    }trace(knap_mc)
    knap_mc.label_txt.text = menu_array[i];

this.knap0.onRelease();

så får jeg en enkelt undefined...
Avatar billede clouise Nybegynder
02. september 2004 - 23:35 #24
tror jeg lukker ned for iaften...
Avatar billede clouise Nybegynder
07. september 2004 - 09:14 #25
er spørgsmålet gået dødt?
Avatar billede thulstrup Nybegynder
07. september 2004 - 11:29 #26
Nej, ikke helt :o)

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();
Avatar billede clouise Nybegynder
07. september 2004 - 21:21 #27
hmm ja... stadig undefined :)
Avatar billede clouise Nybegynder
07. september 2004 - 23:29 #28
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 :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kryptokustode til opbygning af Forsvarets nye IT-platform

Politiets Efterretningstjeneste

AI/ML udvikler i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen