Avatar billede donslund Nybegynder
02. marts 2002 - 11:43 Der er 13 kommentarer og
1 løsning

funktion

Barklund. eller hvem der gider belastes med mine problemr :-)

Hvis jeg skal hive noget ud i en funktion i stedet for at skrive det samme 16 gange, så hiver jeg det ud i frame 1 i mit actions layer og alle de steder hvor der før stod this. har jeg erstattet med _root.mc_name

min funtion hedder klik(mc_name)
og når jeg kalder den skriver jeg klik (8-2)

Men det virker ikke en skid. Hvad gør jeg forkert?
Avatar billede hoejrup Nybegynder
02. marts 2002 - 11:54 #1
Eksempel på din funktion, men det er ikke sikkert at dette eksempel virker:

function klik(mc_name) {
  _root["mc_name"].gotoAndPlay(1);
}

Sådan kalder du funktionen:

klik(_root.mitmc)

/per
Avatar billede barklund Nybegynder
02. marts 2002 - 12:00 #2
Du skal vælge, om den skal tage et mc_name eller et mc som argument (per har fået blandet dem sammen)... Med mc_name osm argument:

function klik(mc_name) {
  _root["mc_name"].gotoAndPlay(1);
}
klik(_root.mitmc._name);

Eller med mc som argument:

function klik(mc) {
  mc.gotoAndPlay(1);
}
klik(_root.mitmc);

Jeg rekommanderer det sidste... Men det er en smagssag... Den første kræver jo, at dit mc ligger i _root, hvorimod den sidste virker på alle mc...

Kaldes de fra et mc, er det enten _root.klik(_name) eller _root.klik(this). De fylder jo det samme...

/Barklund
Avatar billede donslund Nybegynder
02. marts 2002 - 12:07 #3
Hvorfor sker det, at når jeg Copy/paster din klik(_root.mitmc) så gider koden ikke problemer ved syntaks check, men laver jeg den om til klik(_root.8-2) Så giver det problemer.
Avatar billede donslund Nybegynder
02. marts 2002 - 12:12 #4
alle mine mc's har navne som 8-2 8-1 7-2 7-1 osv.

Giver det problemer ved at flash tror det er ren matematik?
Avatar billede donslund Nybegynder
02. marts 2002 - 12:45 #5
Ja, det gav problemer. Jeh har lavet alle instance navnene om til a1 a2 b1 b2 osv. Og det virker. Tak for hjælpen.
Avatar billede barklund Nybegynder
02. marts 2002 - 14:08 #6
fortolkeren ser _root.8-2 som _root.(tallet 8)(minus)(tallet 2) - det kan den ikke finde ud af...

Skrev du istedet _root["8-2"], ville der ingen problemer være...
Avatar billede barklund Nybegynder
02. marts 2002 - 14:09 #7
Et svar...
Avatar billede barklund Nybegynder
02. marts 2002 - 14:09 #8
Nej, et svar... :o)
Avatar billede barklund Nybegynder
07. marts 2002 - 15:15 #9
Tarker... Kan det bruges?
Avatar billede donslund Nybegynder
07. marts 2002 - 17:56 #10
ja
Avatar billede donslund Nybegynder
08. marts 2002 - 09:17 #11
Kan du ikke lige gennemskue det her for mig. Giver det mening?

function boksen (mc_name) {

    ["mc_name"].xDistance = _root._xmouse-["mc_name"]._x;
    ["mc_name"].yDistance = _root._ymouse-["mc_name"]._y;
    ["mc_name"].totalDistance = Math.sqrt((Math.pow(["mc_name"].xDistance, 2))+(Math.pow(["mc_name"].xDistance, 2)));
    ["mc_name"].totalDistance = Math.abs(["mc_name"].totalDistance);
    setProperty (["mc_name"], _alpha, totalDistance);
}

Functionen bliver så kaldt med:

onClipEvent (enterFrame) {

    boksen(_root.a10);
}
Avatar billede barklund Nybegynder
08. marts 2002 - 10:21 #12
Altsaa... Nu fik du jo rodet det sammen alligevel... Du skal jo kalde din funktion et movieclip ELLER et movieclips navn... Du har modtager jo i din funktion et movieclips navn og behandler det som saadan, men sender et movieclip til funktionen... Lav din funktion om, saa den modtager et movieclip:

function boksen (mc) {
    var x_d = _root._xmouse-mc._x;
    var y_d = _root._ymouse-mc._y;
    mc._alpha = Math.sqrt(x_d*x_d+y_d*y_d);
}

Denne goer det samme som din funktion, den er bare lidt mere kompakt...

Den har dog det problem, at den muligvis forsoeger at saette alpha stoerre end 100, hvilket ikke giver mening i Flash...

/Barklund
Avatar billede donslund Nybegynder
08. marts 2002 - 10:33 #13
Okay, dit virker, men jeg fatter ikke, hvad det er jeg gør galt.
Avatar billede barklund Nybegynder
08. marts 2002 - 12:46 #14
For det første mangler dit eksempel en eller anden reference før []... fx _root eller this... Derudover tager dit eksempel jo en variabel mc_name, men den bliver ikke brugt nogen steder, for du skriver jo bare "mc_name" hvilket er en statisk tekst... Den tekst bliver ikke erstattet af din variabel - heldigvis...

Tænk hvis man ikke kunne skrive:

min_tekst = "Jeg har det godt, for solen skinner."

Fordi ordet "for" er et reserveret ord i Flash... Tekster, som du skriver i "", er statiske og ord i sådanne bliver ikke erstatter med variabler... I ovenstående eksmpel ville ordet "solen" jo ikke bliver erstattet med noget andet, bare fordi jeg havde en variabel et andet sted, der hed:

solen = "planet"

Håber du forstår - det er ret vigtigt for at kunne programmere...

/Barklund
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