action script - buttons

action script - buttons

Innleggav srb » ons 03.12.2008 1:26

Jeg skal lage en knapp for en eng versjon av min side.
I to forskjellige layers har jeg henholdsvis en button for norsk og en for eng versjon.
Men idet jeg skal eksportere denne får jeg bla følgende melding: "1021: Duplicate function definition.
medlem i 136 måneder
 

Re: action script - buttons

Innleggav decodex » tor 04.12.2008 1:06

Vel, har du to separate funksjoner for de to knappene, men med samme navn som bare ligger adskilt på hvert sitt lag? Dvs. har du eksempelvis en funksjon kalt velgSpråk på lag 5, og en annen funksjon med samme navn på lag 6?

Brukerens avatar
medlem i 161 måneder
 

Re: action script - buttons

Innleggav srb » tor 04.12.2008 11:11

Ja, jeg har to lag med to forskjellige knapper, men de har ulike funksjoner, samt forskjellig instance name selvfølgelig. Og nettopp derfor skjønner jeg ikke hvor problemet ligger.
Bilde
Bilde
Bilde
Bilde
medlem i 136 måneder
 

Re: action script - buttons

Innleggav decodex » fre 05.12.2008 1:05

Litt kunnskap om funksjoner: Det som gjør to funksjoner forskjellige (foruten koden inni de) er skopet de er definert i og signaturen. Hvordan begge de konseptene håndteres i programmeringsspråk varierer, spesielt sistnevnte, men som oftest bør du være veldig forsiktig med å bruke samme navn på funksjoner.

Dine to funksjoner befinner seg i samme skop (Flash skiller ikke på skop mellom lag, og støtter ikke såkalt overlasting av funksjoner). Funksjonene dine kolliderer derfor ettersom de har samme navn. Ettersom disse funksjonene ikke skal gjenbrukes og er veldig enkle, foreslår jeg egentlig å bruke anonyme funksjoner. For å gi eksempel med den ene knappen din:

Kode: Merk alt
engButton_mc.addEventListener(MouseEvent.CLICK, function (event:MouseEvent) {
   var link:URLRequest = new URLRequest("http://www.iguan.no/fotoeng.html");
   navigateToURL(link, "_self");
});


Som du ser gir jeg ikke et navn på funksjonen, men sender funksjonen direkte som parameter til addEventListener-metoden. I tillegg har jeg valgt å flytte deklareringen av link-variabelen inn i funksjonen fremfor å kludre til det ytre skopet hvor den ikke har noe nytte.

Håper forklaringen i stedet for bare løsningen var litt til hjelp for fremtiden :)

Brukerens avatar
medlem i 161 måneder
 

Re: action script - buttons

Innleggav srb » fre 05.12.2008 1:32

Ja, takk. Supert!

Men...nå forstår jeg dette dithen at det kan legges inn tilsvarende actionscipt på den andre knappen-siden det nå ikke er samme funksjon.
Med hver sine navn og link adr, får jeg opp dette:
1151: A conflict exists with definition link in namespace internal.
medlem i 136 måneder
 

Re: action script - buttons

Innleggav decodex » fre 05.12.2008 16:54

Ja, du kan bruke tilsvarende kodesnutt med anonym funksjon for den andre knappen.

Du nevnte tidligere at du hadde passet på å bruke forskjellige instansnavn for knappene. Instansnavn er det samme som en variabel, og variabler kan heller ikke ha samme navn innenfor samme skop og det er nettopp det du får feilmelding om nå.

Det virker ikke som du da har brukt kodesnutten som jeg ga deg helt riktig, du har nok fortsatt to deklarasjoner av en variabel kalt link i det globale skopet. Kodesnutten jeg ga deg fungerer som en komplett erstatning for all kode til én knapp, inklusive linjen hvor du oppretter URLRequest og lagrer i variabelen link.

Brukerens avatar
medlem i 161 måneder
 

Re: action script - buttons

Innleggav srb » man 08.12.2008 1:52

Hmmm...her er det jeg har lagt inn:
Kode: Merk alt
engelskButton_mc.addEventListener(MouseEvent.CLICK, function (event:MouseEvent) {
   var link:URLRequest = new URLRequest("http://www.iguan.no/fotoeng.html");
   navigateToURL(link, "_self");
});


Kode: Merk alt
norskButton_mc.addEventListener(MouseEvent.CLICK, function (event:MouseEvent) {
   var link:URLRequest = new URLRequest ("http://www.iguan.no/foto.html");
   navigateToURL(link, "_self");
});

Skjønner ikke hva du mener, skal jeg endre på "link", eller på "function" ?
medlem i 136 måneder
 

Re: action script - buttons

Innleggav decodex » man 08.12.2008 17:44

Ok, du har gjort det slik jeg mente. Men ser ut som det er en faktisk bug i Flash ved kompilering av kode som ligger direkte i lag og man bruker anonyme funksjoner.

Omveier for å løse konflikten er at du f.eks. bruker link1 og link2 som variabelnavn. Eller du kan unngå å mellomlagre URLRequest-objektet i en link-variabel og opprette direkte i kallet på navigateToURL.

Brukerens avatar
medlem i 161 måneder
 

Re: action script - buttons

Innleggav srb » tir 09.12.2008 0:58

Supert!
Takk, nå funker det.
http://www.iguan.no
medlem i 136 måneder
 


Returner til Flash / Silverlight



Hvem er i Forumene

Registrerte brukere: Google [Bot]