Avatar billede telemuzen Nybegynder
31. oktober 2002 - 11:13 Der er 8 kommentarer og
1 løsning

Array notation??

hejza.
Er der nogen der kan give mig en forklaring på Array notation?

F-eks når man duplikerer et MC, og bruger [mc]._x osv til at scripte med, er det så fordi det er nemmere at overskue eller er det fordi det er den eneste måde?
kan man ikke istedet bruge mc._x?
Avatar billede barklund Nybegynder
31. oktober 2002 - 11:25 #1
I normale arrays er det kun tilladt at have tal som indexer. Men Flash (og en række tilsvarende scriptingssprog) tillader også associative arrays, så man kan bruge strenge som indexer:

mitArray = new Array();
mitArray["foo"] = "bar"

Det betyder det samme som:

mitArray.foo = "bar";

Kan du allerede nu se forskellen?

Hvis nu mit array bestod af:

mitArray = new Array();
mitArray.foo = "bar";
mitArray.bar = "foo";

Og jeg så skulle dynamisk efter noget i et input felt vælge en af de to:

dynVariabel = "foo";

Så kan jeg ikke skrive:

mitArray.dynVariabel

For det svarer jo til:

mitArray["dynVariabel"]

Og den findes ikke! Defor skal jeg skrive:

mitArray[dynVariabel]

Som svarer til:

mitArray["foo"]

Som jo er det jeg leder efter.. Kan du se pointen?



Med movieclips er det det samme. Alle variabler i et movieclip til det til movieclippet tilhørende associative array:

_root.foo = "bar";

Så findes variablen i _root og kan findes som enten;

_root["foo"]
_root.foo

Hvis nu der ligger 10 movieclips i _root navngivet som:

_root.mc1
_root.mc2
...
_root.mc10

Så kan jeg jo ikke lave en løkke som:

for (i = 1; i <= 10; i++) {
    trace(_root.mc+i);
}

Det er jo noget rod. Det jeg leder efter er jo:

_root["mc"+i], som derfor er den eneste måde at lave det på...

Hvis jeg gemte "mc"+i i en variabel "mc", så var jeg stadig nødt til at bruge array-notationen:

for (i = 1; i <= 10; i++) {
    mc = "mc"+i;
    trace(_root[mc]);
}

For "_root[mc]" bliver evalueret til "_root['mc1']" som er det rigtige. Skrev jeg bare "_root.mc", så ville det igen svare til "_root['mc']", som ikke findes...

Skal du bruge yderligere forklaring, så spørger du bare :o)

/Barklund
Avatar billede telemuzen Nybegynder
31. oktober 2002 - 11:35 #2
Se det var en go forklaring!
Jeg arbejder lige lidt på det, jeg synes også at det er nemmere at se hvad der foregår i scriptet hvis man bruger [].
TeleMuzZen :-D
Avatar billede barklund Nybegynder
31. oktober 2002 - 12:15 #3
Tark for point :o)
Avatar billede telemuzen Nybegynder
31. oktober 2002 - 12:16 #4
Selv tark...
Avatar billede baitianlong Nybegynder
31. oktober 2002 - 16:33 #5
Skulle foobar ikke være fubar ? (o;
Avatar billede barklund Nybegynder
31. oktober 2002 - 16:43 #6
legende >>

foo og bar er standard nørdede dummy-variabler... Det kommer fra WWII og netop af begrebet "fubar", men deler ikke betydning med dette...

Link fx: http://www.tuxedo.org/~esr/jargon/jargon.html#foobar
Avatar billede baitianlong Nybegynder
31. oktober 2002 - 16:53 #7
Interessant baggrundsinfo.... "nørdede dummy variabler" *LOL* (o; cool
Avatar billede barklund Nybegynder
31. oktober 2002 - 17:10 #8
Meget almindelige på mit studie i både lærebøger og andet...

IBM i 70'erne anvendte dem i denne rækkefølge:

foo, bar, thud, blat

Som de fire dummy-variabler der blev brugt i eksempler og tilsvarende...
Avatar billede baitianlong Nybegynder
31. oktober 2002 - 17:16 #9
Jeg har godt nok ikke stødt på dem på datamatiker studiet. Men jeg ved også dit studie er noget mere langhåret (o;
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