Avatar billede arroyos Nybegynder
20. april 2007 - 22:40 Der er 4 kommentarer og
1 løsning

Show/hide layer med tryk på knap

Hej. Først vil jeg lige sige at jeg har søgt på forummet efter tidligere svar, men de få jeg fandt var ret komplekse, og jeg er ny til flash, så jeg kunne ikke få dem til at give mening. Jeg håber at en af jer kan give en nem forklaring.

Jeg er i gang med at lave en webside med Flash 8 der skal kunne læses på tre forskelige sprog. Dansk, engelsk og spansk. Siden har omkring 40 keyframes som indeholder al informationen på siden. Jeg har lavet tre buttons: en med det danske flag, en med det engelske og en med det spanske. Teksten har jeg lavet i tekstbokse. Først lavede jeg den engelske tekst del i sit eget layer - kaldet "Englanguage". Så kopierede jeg teksboksene til den spanske og danske del og omskrev teksten til de sprog. Hver sprog har så deres eget layer: "Englanguage", "Spalanguage" og "Danlanguage". Inde i flash editoren er det smart nok. Når jeg f.eks. trykker at på at "Englanguage" og "Spalanguage" skal gemmes/gøres usynlige, så står kun den danske tekst frem som den skal. Men hvilket action script skal jeg give til min "Danske flag"-button så at det danske tekst-layer vises og de to andre gemmes?

Eller er der en anden og bedre måde at multisprogswebsider på?

Tak
Avatar billede rookieboy Nybegynder
22. april 2007 - 19:23 #1
Du kan løse problemet sådan her:

sprog1_mc._visible = sprog2_mc._visible = sprog3_mc._visible = false;

base = this;
function ShowLang(Arg1:Number){
sprog1_mc._visible = sprog2_mc._visible = sprog3_mc._visible = false; // Gemmer alle sprog
base["sprog" + Arg1 + "_mc"]._visible = true; // Viser det valgte sprog
}

select1_mc.onRelease = function() {ShowLang(1)}
select2_mc.onRelease = function() {ShowLang(2)}
select3_mc.onRelease = function() {ShowLang(3)}

Jeg har lavet en .fla fil til dig som du kan hente her: http://www.actiontime.dk/test.fla

Det er ikke den mest elegante metode, og jeg er sikker på at Morten Barklund kan lave noget mere 'smooth' - men det viker ;-)
Avatar billede arroyos Nybegynder
25. april 2007 - 21:34 #2
Tak for det. Jeg har leget med det, men der er en ting jeg ikke helt kan få til at virke. Hvordan får jeg flere tekstbokse i et layer til at blive vist når jeg trykker på en af de tre knapper? Det jeg mener er at jeg har f.eks. en overskrift-tekstboks, en indholdstekstboks og en "lille-skrift-under-et-billede"tekstboks. Alle disse tre (som f.eks. alle ligger i layer 1) skal gerne skifte sprog når jeg trykker på knap et.

Kan man det?
Avatar billede rookieboy Nybegynder
25. april 2007 - 22:49 #3
Det lyder som om du ikke har strukturen i Flash helt på plads; I det pågældende eksempel ligger dine tekstbokse i nogle movieclips og disse movieclips ligger igen på nogle layers i din timeline.

Du kan ikke bare oprette en tekstboks på din scene og tilgå elementet via Actionscript! Men du kan konvertere et element på scenen til et movieclip (F8) eller oprette et nyt movieclip (CTRL+F8) og putte indhold i. Disse movieclips kan du så give et instancename som du kan referere til i Actionscript.

Prøv at kig på http://www.totaltraining.com - der er nogle gratis flash videotutorials.

/Christian
Avatar billede arroyos Nybegynder
26. april 2007 - 21:30 #4
Okay. Altså jeg har prøvet at oprette flere tekstbokse i layer 1 og omdanne dem til movie clips og har så givet dem instance name sprog4_mc og sprog5_mc. Og i scriptet har jeg så prøvet forskellige ting, men intet af det virker. Bl.a.:

sprog1_mc._visible = sprog2_mc._visible = sprog3_mc._visible = sprog4_mc._visible = sprog5_mc._visible = false;

base = this;
function ShowLang(Arg1:Number){
sprog1_mc._visible = sprog2_mc._visible = sprog3_mc._visible = sprog4_mc._visible = sprog5_mc._visible = false; // Gemmer alle sprog
base["sprog" + Arg1 + "_mc"]._visible = true; // Viser det valgte sprog
}

select1_mc.onRelease = function() {ShowLang(1)}
select1_mc.onRelease = function() {ShowLang(4)}
select1_mc.onRelease = function() {ShowLang(5)}
select2_mc.onRelease = function() {ShowLang(2)}
select3_mc.onRelease = function() {ShowLang(3)}

og


base = this;
function ShowLang(Arg1:Number){
sprog1_mc._visible = sprog2_mc._visible = sprog3_mc._visible = sprog4_mc._visible = sprog5_mc._visible = false; // Gemmer alle sprog
base["sprog" + Arg1 + "_mc"]._visible = true; // Viser det valgte sprog
}

select1_mc.onRelease = function() {ShowLang(1, 4, 5)}
select2_mc.onRelease = function() {ShowLang(2)}
select3_mc.onRelease = function() {ShowLang(3)}

Men de bliver ikke alle vist... Enten viser den kun sprog1_mc eller sprog5_mc... Er der en anden måde at knytte flere elementer til én knap?
Avatar billede rookieboy Nybegynder
03. maj 2007 - 14:12 #5
Nej, det der kommer ikke til at spille.

Prøv lige at læse hvad du har skrevet:

select1_mc.onRelease = function() {ShowLang(1)}
select1_mc.onRelease = function() {ShowLang(4)}
select1_mc.onRelease = function() {ShowLang(5)}

Det svarer til at skrive følgende:
x=1
x=2
x=12

I dette tilfælde bliver x altså 12 og de 2 foregående variabel tildelinger bliver overskrevet af den sidste.

Det giver ingen mening at definere 3 forskellige onRelease actions på én og samme knap, når det logisk set kun giver mening at have én funktion pr. knap.

Når du skriver :

minknap_mc.onRelease = function(){
trace("Nu er knappen trykket")
}

Så fortæller du, at når musen slipper movieclippet med instancenamet 'minknap_mc' så skal flash skrive 'Nu er knappen trykket'.


Du skriver: " Altså jeg har prøvet at oprette flere tekstbokse i layer 1 og omdanne dem til movie clips og har så givet dem instance name sprog4_mc og sprog5_mc."

Dette vil ikke give det ønskede resultat, da der allerede er oprettet movieclips med instancename sprog4_mc og sprog5_mc. Du skal åbne fx. sprog4_mc og så tilføje de forskellige tekstelemeter. Altså INDE I dine movieclip og IKKE på din main timeline / layers.

Er du med så langt?
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