Avatar billede 4b4 Nybegynder
17. oktober 2004 - 21:06 Der er 15 kommentarer og
2 løsninger

Hvordan med funktioner

Dette er et flash mx relateret spørgsmål (så er det vist på plads :) ).

Jeg sidder og funderer over hvordan funktioner virker.. eller rettere hvordan man laver dem.

et lille eksempel:

ved at trykke på en knap ændrer man en variabel.. lad os kalde den 'url'.. som så skal åbne et vindue via en funktion (ja det kan sagtens gøres med aldm. getURL.. men nu bare for at lære det..)

Godt være det er et dumt eksempel.. men hvordan definerer og bruges simple funktioner?
Avatar billede gulekings Nybegynder
17. oktober 2004 - 21:31 #1
en simpel function kan defineres sådan her:

function doSimpleThing(){
  trace("simple");
}

og kan kaldes sådan her:
doSimpleThing() //tracer "simple"

Du kan også sende parametre med i en function.. lad os sige ud ikke skal trace det samme hver gang:

function doSimpleThing(whatToTrace){
trace(whatToTrace);
}

kaldes:
doSimpleThing("hello world"); //tracer hello world

Du kan altså samle en bunke kode i en function, som du så kan køre ved at simpelt kald..

Dit eksempl med en url:

function openUrl(url, window){
  trace("Åbner url: "+url+" i vinduet: "+window);
  getURL(url, window);
}

kan kaldes:
openUrl("http://www.exp.dk", "_blank");
openUrl("http://www.hotmail.com", "_parent");
Avatar billede 4b4 Nybegynder
17. oktober 2004 - 21:37 #2
Du har vel ikke nogle flere små sjove eksempler? dem du har skrevet pt. har været til stor nydelse :)
Avatar billede pyroman Nybegynder
17. oktober 2004 - 21:40 #3
En funktion er bare nogle liniers kode som du kan udføre ved at kalde funktionens navn. I stedet for at bruge en funktion kunne man også bare skrive de linier kode der nu var brug for - men hvis man skal bruge den samme kode mange gange, så kan det blive ufatteligt svært, langsomt og uoverskueligt at skulle kode det hele...

getURL() er en funktion eller i dette tilfælde også en "metode" - den kan man bare ikke lave selv, da den er defineret i flash programmets kerne...

Du kan til gengæld lave en funktion der viderebygger getURL til noget du skal bruge, fx åbne en side med en bestemt url ud fra et navn...

funktionen kan se sådan ud:


function åbnSide (navn){
  if(navn == "google"{
    getURL("http://www.google.dk", "_blank");
  }else if(navn == "eksperten"){
    getURL("http://www.eksperten.dk", "_blank");
  }
}


Først bruges udtrykket 'function' der skal til for at definere en funktion, derefter navnet, her 'åbnSide'.
Dette efterfølges et en parentes - i denne kan man angive eventuelle parametre for funktionen, adskilt af kommaer. Parametrene bruges hvis man vil videregive variabeler og værdier til koden i funktionen fra funktionskaldet - altså dér hvor man vil udføre funktionen.
Herefter kommer der en klamme-parentes { ... } hvori den kode funktionen skal udføre skal stå.

Når man så vil udføre funktionen skriver man bare:


åbnSide("google");


...Det var en hurtigt gennemgang, håber du har forstået grundopbygningen, eller må du bare spørge... ;)
Avatar billede 4b4 Nybegynder
17. oktober 2004 - 21:40 #4
spørgsmål: hvorfor trace hele tiden ?
Avatar billede 4b4 Nybegynder
17. oktober 2004 - 21:42 #5
den er feset ind. tak :)
Avatar billede pyroman Nybegynder
17. oktober 2004 - 21:48 #6
Hvorfor var jeg lige så lang tid om at få det skrevet??

Nåh - men kan da godt hjælpe med lidt eksempler:


function lægSammen (tal1, tal2){
  trace(tal1 + tal2);
}
lægSammen(2, 6);


Nu bliver dte avanceret!! Du kender nok nu til at lave simple funktioner, og også funktioner som trace() og getURL() - disse returnerer ikke noget, måske lidt svært at forstå, men man kan få en funktion til at give en værdi tilbage når man kalder den, så vil funktionen nærmest virke som en variabel, hvis værdi fx afhænger af de parametre man giver:

function lægSammen_2 (tal1, tal2){
  return tal1 + tal2;  //Kommentar: her bruges ordet 'return'
}
trace(lægSammen_2(2, 6));

læg mærke til at jeg kalder en funktionen "lægSammen_2" inde i funktionen trace()
Avatar billede gulekings Nybegynder
17. oktober 2004 - 21:48 #7
Det var bare for at slippe for at finde på noget bedre :)

Du kan sagtens selv finde på noget.. alt hvad du scripter kan du lave til funktioner, faktisk burde man gøre det, for ofte spare det een for at kopierer kode.

fx:

loen = 10000;
function udregnAarsloen(){
  return 12*loen
}
aarsloen = udregnAarsloen()

eller:
function getPercentLoaded(mc){
  return (mc._getBytesLoaded()/mc._getBytesTotal())*100
}
Avatar billede 4b4 Nybegynder
17. oktober 2004 - 22:01 #8
return = ? bare en variabel el ?
Avatar billede 4b4 Nybegynder
17. oktober 2004 - 22:02 #9
ahh dum dum dum.. return er bare et funktion i funktionen til at vidergi en værdi..

Kan man lave mixed funktioner? En der både udfører en given kommando og 'parser' en værdi ?
Avatar billede gulekings Nybegynder
17. oktober 2004 - 22:10 #10
ja, det kan du sagtens, kan ikke lige komme i tanke om et ordenligt eksempel,men i princippet:

function gørNoget(){
  var1="noget";
  var2="noget andet";
  var3=udregnAarsloen()
  retun var2;
}

hvis det var det du mente ?
Avatar billede pyroman Nybegynder
17. oktober 2004 - 22:19 #11
Du kan kode hvad som helst i din funktion - bruge andre funktioner du har lavet, ændre variabler - alt! Og du kan også returnere en værdi - men ligeså snart at du bruger udtrykket "return ...;" så stopper funktionen med at afvikles, og alt efterfølgende kode bliver ignoreret...
Man kan derfor ende sin funktion med at returnere en værdi eller returnere ingenting:


funktion slutKode (){
  trace("1");
  trace("2");
  return;
  trace("3");
}
slutKode();
Avatar billede 4b4 Nybegynder
18. oktober 2004 - 13:58 #12
når du ex. laver:
funktion slutKode (){
  trace("1");
  trace("2");
  return;
  trace("3");
}

Hvad returnerer den så? trace 3 ?
Avatar billede kalleballe Nybegynder
18. oktober 2004 - 14:09 #13
og i flash mx er dette her jo også ok:

minFunktion = function(){

//min kode

}
Avatar billede 4b4 Nybegynder
18. oktober 2004 - 14:09 #14
Vi må hellere få nogle svar på bordet fra jer alle :)
Avatar billede pyroman Nybegynder
18. oktober 2004 - 18:56 #15
i slutKode() teturnere den ikke en skid - det var for at vise at man kan bruge return; til at slutte med at udføre kode...
Det kan man bruge i fx nogle store løkker eller kæder af if-sætninger, hvis man i et bestemt tilfælde vil forhindre at noget bliver udført, fx her:


var variabel = "værdi";
funktion ændrVariabel (nyVærdi){
if(værdi == "lort"){
  trace("hov hov - kan vi få nogle andre ord?");
  return;
}
variabel = nyVærdi;
}

Her kunne man også bare have brugt en 'else' - men i nogle tilfælde er det smartere bare at slutte funktionen med return...

Og så et svarda ;)
Avatar billede gulekings Nybegynder
19. oktober 2004 - 11:30 #16
svar :)
Avatar billede grafik-anders Seniormester
16. december 2006 - 16:33 #17
Tak for en god forklaring!

Jeg er jo også lidt en amatør og vil derfor gerne spørge om en funktion kan kaldes fra andre mc, end der, hvor den er oprettet?

Kan man kalde den med en sti?
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