Avatar billede rune.osterdal.com Nybegynder
22. oktober 2001 - 17:07 Der er 17 kommentarer og
2 løsninger

Cirkel som guide

Jeg har et symbol jeg skal have til at køre rundt i en cirkel. Har oprettet cirklen i guidelayer\'et og \"snappet\" symbolet til cirklen. Men hvordan får jeg objektet til at køre en omgang? Jeg har keyframes i start og slut, men da start og slutposition er den samme står symbolet bare stille.... ?
Avatar billede beatone Nybegynder
22. oktober 2001 - 17:17 #1
hvis du fjerner et lille stykke af din cirkel virker det...
Avatar billede beatone Nybegynder
22. oktober 2001 - 17:19 #2
..imellem start og slut punktet
Avatar billede wilweb Nybegynder
22. oktober 2001 - 17:46 #3
Kun en kommentar \'beatone\' har helt ret, men jeg døjede meget med det da jeg skulle lære det fordi jeg ikke havde placeret objektet præsist nok.
sæt objektet på start punktet på den ene af cirklens ender og objektet slut punktet på den anden ende.
Når man trykker og holder musen nede på objektet der skal følge guide\'en kommer der en lille cirkel på objektet og det er den der skal snappe til guiden\'s start og slut punkt.
Avatar billede rune.osterdal.com Nybegynder
22. oktober 2001 - 18:05 #4
jeps...
just wondering... om der var en anden løsning...
Avatar billede wilweb Nybegynder
22. oktober 2001 - 18:11 #5
Du kan sikkert kode dig ud af det!
Avatar billede beatone Nybegynder
22. oktober 2001 - 18:16 #6
Hvis du flytter figurens centrum kan du jo rotere den omkring det...
Avatar billede rune.osterdal.com Nybegynder
22. oktober 2001 - 18:17 #7
(o; Det var netop det jeg tænkte på....
Men da jeg ikke er begyndt at kigge på actionscript (glæder mig til det) er det nok ikke noget jeg bare hiver ud af ærmet...
men jeg må jo bare prøve den simple løsning...
Avatar billede gotcha Nybegynder
22. oktober 2001 - 20:18 #8
Du kan sagtens gøre det med ActionScript, men det kræver dog lidt viden om grundlæggende geometri.

Hvis vi tager enhedscirklen, så har et punkt koordinaterne (cos(x),sin(x)), men da radius i enhedscirklen er 1, så er det underforstået. Dermed bliver koordinaterne (r*cos(x),r*sin(x)), hvor r selvfølgelig er radius. Variablen x er vores vinkel, og for at få den til at bevæge sig hele vejen rundt i cirklen, skal den gennemløbe værdier fra 0 til 360, da der jo er 360 grader i en cirkel. På enhedscirklen er centrum (0,0), men det er ikke nødvendigvis tilfældet her. For at kompensere for dette, skal vi bare lægge nogle konstanter til (variablen trans oversætter fra radianer til grader, da vi arbejder med grader og Flash med radianer).

Vi kan skrive det sådan:

onClipEvent(load) {

  r = 100;
  trans = Math.PI/180;
  x = 0;
  centerX = 100;
  centerY = 100;


}

onClipEvent(enterFrame) {

if(x<360) {

  _x = r*Math.cos(x*trans)+centerX;
  _y = r*Math.sin(x*trans)+centerY;

  x++;

}
}

Hvis det skal gå hurtigere (med ovenstående kode tager det 360 frames), så kan du f.eks. bare erstatte x++ (som jo er lig med x += 1) med x += 5 (forøg værdien hvis det skal gå hurtigere, men for at vende tilbage til præcist samme udgangspunkt, så skal værdien gå op i 360). :)

Mvh Morten
Avatar billede gotcha Nybegynder
22. oktober 2001 - 20:20 #9
Du skal forresten bare kopiere ovenstående kode og vedhæfte det til et movie clip (højreklik og vælg Actions) for at få det til at virke.

Mvh Morten
Avatar billede telemuzen Nybegynder
22. oktober 2001 - 21:04 #10
Super med alt det script...
Super - Super - Telemuzen - Snuser
Avatar billede gotcha Nybegynder
22. oktober 2001 - 21:33 #11
Det var så lidt :)
Avatar billede rune.osterdal.com Nybegynder
22. oktober 2001 - 21:57 #12
Det ser interesant ud. Det må jeg lige lege med.. engang. Problemet her er at jeg har en cirkel med en radial gradiant så det skal forestille en rund bold. I kredsløb om denne bold skal der så flyve nogle kugler (tænk planeter)... i 2D er det altså ikke en perfekt cirkel de skal flyve efter.. (burde nok have forklaret det ordentligt til at starte med...)O;
Avatar billede rune.osterdal.com Nybegynder
22. oktober 2001 - 21:59 #13
Jeg deler de oprindelige 30 point mellem Jer og smider yderligere 20 point i nakken på Morten, som tak for et interessant svar, jeg helt sikkert skal lege lidt med senere... (o;
Takker!
Avatar billede rune.osterdal.com Nybegynder
22. oktober 2001 - 22:16 #14
Avatar billede gotcha Nybegynder
22. oktober 2001 - 22:54 #15
Jeg kan ikke lige se din fil, men planeters kredsløb kan beskrives ved en ellipse. Hvis vi nu tager http://www.hhbk.subnet.dk/PlotCircle.swf , så kan du se, hvad jeg mener. I forhold til den oprindelige kode, så er der bare tale om to værdier af radius (en for hvert plan). Hvis vi nu kalder den cirkel, som planterne skal kredse om, for bold og den befinder sig på hovedtidslinien (den skal så have instance-navnet bold), så skal du bare vedhæfte følgende kode til et movie clip på hovedtidslinien, og den vil derefter kredse om bold:

onClipEvent(load) {

  radiusX = random(30)+100;
  radiusY = random(30)+100;

  centerX = _root.bold._x;
  centerY = _root.bold._y;

  trans = Math.PI/180;

  x = 0;
  velX = random(5)-random(5)+1

}

onClipEvent(enterFrame) {

  _x = radiusX*Math.cos(x*trans)+centerX;
  _y = radiusY*Math.sin(x*trans)+centerY;

  x += velX;
}

De to værdier af radius og hastigheden x er så sat til en vilkårlig værdi for det enkelte movie clip, sådan at hvis du vedhæfter den samme kode til forskellige movie clips, så vil du få forskellige baner og hastigheder (der er langt 1 til hastigheden, så den ikke kan give 0). Hvis du kun vil have, at planeterne skal kredse med uret, så kan du bare erstatte velX = random(5)-random(5)+1 med f.eks. velX = random(5)+1 :)

Mvh Morten
Avatar billede gotcha Nybegynder
22. oktober 2001 - 22:56 #16
Hov, det var en lille smutter; velX kan stadig give 0. Indsæt derfor en betingelse:

velX = random(5)-random(5)+1;

if(velX == 0) {

  velX = 1;

}

Det gik vist lidt hurtigt ;)

Mvh Morten
Avatar billede gotcha Nybegynder
22. oktober 2001 - 23:08 #17
Et hurtigt lavet (og virkelig grimt) eksempel kan ses her:

http://hhbk.subnet.dk/orbit.swf

Kilden kan hentes her:

http://hhbk.subnet.dk/orbit.fla

Mvh Morten
Avatar billede rune.osterdal.com Nybegynder
23. oktober 2001 - 00:30 #18
fedest!
Du er lidt af en haj til Flash...
Hvor længe har du arbejdet med det?
Kan du anbefale nogle gode bøger?
jeg har Foundation Flash 5 (virkelig god) og har lige bestilt Foundation ActionScript...
Avatar billede gotcha Nybegynder
23. oktober 2001 - 07:54 #19
Du kan se nogle af mine eksperimenter på http://www.hhbk.subnet.dk/GotCha.html :)

Jeg begyndte med Flash 4 og lærte det ved at pille andres filer fra hinanden. Ud over det, så følger jeg bare lidt med på nettet (jeg kigger dagligt på http://www.flashguru.co.uk og http://www.were-here.com ), men jeg har faktisk aldrig brugt en bog for at lære Flash. Når først du fatter syntaksen, så kører det :)

Jeg har dog læst et kapitel fra \"ActionScript: The Definitive Guide\" af Colin Moock, og efter hvad alle andre siger, så er det helt klart den bedste (den kan finde flere oplysninger på http://www.moock.org/asdg/ ).

Mvh Morten
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