Avatar billede cowboy Nybegynder
29. august 2002 - 10:09 Der 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.
Avatar billede cowboy Nybegynder
29. august 2002 - 10:10 #1
Den første onClipevent(load), forstår jeg til dels godt. Her bliver vaiablerne defineret, ikk!
Avatar billede pixelpaw Nybegynder
29. august 2002 - 11:47 #2
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.
Avatar billede cowboy Nybegynder
29. august 2002 - 12:12 #3
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.
Avatar billede cowboy Nybegynder
29. august 2002 - 12:13 #4
Det er udregningen jeg ikke forstår ?
Avatar billede pixelpaw Nybegynder
29. august 2002 - 12:14 #5
jeg kan heller ikke lige se hvad "yvel = yvel" skal gøre godt for...
Avatar billede cowboy Nybegynder
29. august 2002 - 12:35 #6
jeg kan sende dig fla. hvis du vil se den ?
Avatar billede pixelpaw Nybegynder
29. august 2002 - 12:37 #7
paw@pote.dk
Avatar billede pixelpaw Nybegynder
29. august 2002 - 13:14 #8
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/
Avatar billede pixelpaw Nybegynder
29. august 2002 - 13:16 #9
nærmere kan jeg nok ikke lige forklare det
Avatar billede cowboy Nybegynder
29. august 2002 - 13:17 #10
Det er altså ikke meget hjælp du kan gi ! Men du skal have tak for dit forsøg :o)
Kan du forklare lidt om formelen ?
Avatar billede cowboy Nybegynder
29. august 2002 - 13:18 #11
ok, så må jeg indrømme at det ikke er nok til at få points. Håber du forstår !

Er der nogen andre som vil prøve
Avatar billede pixelpaw Nybegynder
29. august 2002 - 13:20 #12
også derfor jeg ikke har smidt et svar :o)
Avatar billede cowboy Nybegynder
29. august 2002 - 13:23 #13
*LOL* det havde jeg ikke lige lagt mærke til. Sorry
Avatar billede barklund Nybegynder
03. september 2002 - 12:21 #14
Jeg prøver lige:

"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)

/Barklund
Avatar billede cowboy Nybegynder
03. september 2002 - 12:36 #15
så +=  betyder at den lægger den nye værdi til variablen.
og
*= betyder at den ganger den nye værdi med variablen ?
Avatar billede barklund Nybegynder
03. september 2002 - 12:42 #16
yup:

"var += 2" <=> "var = var+2"

Sådan er det med

+=
*=
-=
/=
%= (modulo)
&= (binær "and")
|= (binær "or")
^= (binær "xor")

og vist nok nogle flere...
Avatar billede cowboy Nybegynder
03. september 2002 - 12:51 #17
ok, jeg takker for hjælpen. Jeg leger lidt videre med Fla'en
Avatar billede barklund Nybegynder
03. september 2002 - 15:20 #18
Tarker...
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