29. august 2002 - 10:09Der er
17 kommentarer og 1 løsning
Actionscript forklaring
Er der en, der kan forklare mig på simphelt DANSK, altså skåret ud i pap, dette lille stykke Actionscriptkode :
onClipEvent(load){ x=_x y=_y f=0.8 r=0.3 fscommand("allowscale",0) } onClipEvent(enterFrame){ if (!drag){ _x+= (xvel = xvel * f + ( x - _x ) * r ) _y+= (yvel = yvel * f + ( y - _y ) * r ) } }
Jeg er ikke så god til kodning. Men vil meget gerne lære det. Derfor kigge jeg eksempler igennem og forsøger at forstår logikken i det. Men det er sku svært.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Der hører mere til det end det der. Jeg kunne forestille mig at der er en knap som sætter variablen "drag" til true/false. Hvis drag == false, så udfører den udregningen. Jeg kan ikke lige se hvad det er den udregner, for jeg kan ikke se hvad xvel og yvel er.
sorry, der er selvføglig en knap inde i et movieclip, som er en rund cirkel. På knappen er der følgende action :on(press){ drag = true this.startDrag() } on(release, releaseOutside){ stopDrag() drag = false }
Der sker det når man afspiller filmen. At man kan drage denne lille cirkel og når man slipper den hopper den tilbage på plads som en elastik.
f = friktionen, det tal der får hastigheden til at falde r = noget hastigheds noget... ummm, hehe "yvel = yvel" er for at den ikke bare smutter direkte tilbage til midten, hvorfor det virker ved jeg ikke lige... :o/
"x" er start-positionen's x-koordinat "y" er start-positionen's y-koordinat
"f" er som nævnt friktionen - eller mangel på samme. Er den 1 så er der ingen friktion og cirklen kan derfor ikke stoppe men fortsætter egentlig i den retning, som den har mod centrum. Den vil under manglen på friktion trækkes tilbage mod centrum og fortsætter modsat. Det bliver til en harmonisk svingning (mekanik). Er den nul, så bevæger den sig lige mod centrum og stopper.
"r" er tiltrækning mod centrum. En slags fjeder-konstant. Er den 1, hopper den direkte til centrum med det samme, er den 0.8, så gør det bare hurtigt, er den 0.1 så tager det laaang tid og er den 0, så står den stille.
Dit "enterFrame"-script kan omskrives til:
onClipEvent(enterFrame){ if (!drag){ xvel *= f; xvel += (x-_x)*r; // afstanden til centrum gange tiltrækning yvel *= f; yvel += (y-_y)*r; _x += xvel; _y += yvel; } }
Altså for x:
"xvel" er den foregående hastighed. Den ganges med friktionsfaktoren, der altså bestemmer, hvormeget den foregående hastighed kommer til at influere den nye hastiged. Derefter lægges den del af afstanden til centrum, som "r" udgør. Er "r" 0.5, så lægges halvdelen af afstanden til.
Prøv at eksperimentere lidt ved at starte med en vektor og nogle andre værdier. Prøv:
onClipEvent(load){ x=_x y=_y f=1 r=0.15 fscommand("allowscale",0) } onClipEvent(enterFrame){ if (!drag){ _x += (xvel = xvel * f + ( x - _x ) * r ) _y += (yvel = yvel * f + ( y - _y ) * r ) } else { yvel = 0; xvel = 40; } }
Det skulle give et indtryk af en satelit om en planet. Jeg har ikke testet og har ikke flash foran mig, men min intuition siger mig, at jeg har ret :o)
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.