Avatar billede Slettet bruger
28. februar 2005 - 12:19 Der er 11 kommentarer og
1 løsning

Lav cirkel med ActionScript

Hej Esser

Kender i en "smart" måde til at lave en cirkel på. Jeg skal lave 100 stk i et loop, så jeg vil gerne have det med så få parameter som muligt.

Helst med en radius.

OleIb
Avatar billede donslund Nybegynder
28. februar 2005 - 12:35 #1
Prøv at søge i hjælpfunktionen efter "circle" Jeg har selv brugt det en gang. Der skulle være en god forklaring.
Avatar billede mat Nybegynder
28. februar 2005 - 12:37 #2
Tegn den med circle tool og dupliker den med actionscript?
Avatar billede barklund Nybegynder
28. februar 2005 - 12:49 #3
Du kan lave den med curveTo's eller lineTo's, men hvor meget det kræver afhænger helt af radius på cirklen, jo større, desto flere punkter.

Men kig på denne her:

http://actionscript.dk/eksperten/circles/

--
Morten Barklund
Avatar billede Slettet bruger
28. februar 2005 - 12:54 #4
Donslund
Det har jeg prøvet, at for mange paramenter.

Mat
Hvordan gør man det?

OleIb
Avatar billede barklund Nybegynder
28. februar 2005 - 13:07 #5
For mange parametre? Noget skal man vel angive?
Avatar billede Slettet bruger
28. februar 2005 - 13:21 #6
Ja, men det ville være dejligt med makeCircle(x,y,r);

Kan du omskrive det med circles, så det bare lave en cirkel?

OleIb
Avatar billede barklund Nybegynder
28. februar 2005 - 13:31 #7
Så bliver det vist noget med:

function makeCircle(x, y, r) {
    var sub = _root.createEmptyMovieClip("m" + (++_root.unik), unik);
    sub._x = x;
    sub._y = y;
    sub.moveTo(r, 0);
    sub.lineStyle(1, 0, 100);
    var i, steps = 36;
    var dx, dy;
    for (i = 0; i < steps; i++) {
        dx = r * Math.cos(i / steps * (2 * Math.PI));
        dy = r * Math.sin(i / steps * (2 * Math.PI));
        sub.lineTo(dx, dy);
    }
    sub.lineTo(r, 0);
}


Skal den have større detaljeringsgrad, skal du ændre steps til et højere tal - altså hvis du vil lave store cirkler også.

--
Morten Barklund
Avatar billede Slettet bruger
28. februar 2005 - 15:38 #8
Barklund

Det kører, men unik er udskiftet med en anden tæller.

Skulle det havde været _root.unik++ istedet

Smid et svar

OleIb
Avatar billede barklund Nybegynder
28. februar 2005 - 17:03 #9
Na:

unik = 0;
function makeCircle(x, y, r) {
    var sub = _root.createEmptyMovieClip("m" + ++unik, unik);
    sub._x = x;
    sub._y = y;
    sub.moveTo(r, 0);
    sub.lineStyle(1, 0, 100);
    var i, steps = 36;
    var dx, dy;
    for (i = 0; i < steps; i++) {
        dx = r * Math.cos(i / steps * (2 * Math.PI));
        dy = r * Math.sin(i / steps * (2 * Math.PI));
        sub.lineTo(dx, dy);
    }
    sub.lineTo(r, 0);
}

Virker fint :)

--
Morten Barklund
Avatar billede barklund Nybegynder
28. februar 2005 - 17:07 #10
Eller, jeg har selvfølgelig ikke testet det ;)
Avatar billede Slettet bruger
28. februar 2005 - 17:08 #11
ok og tak

Mangler et svar

OleIb
Avatar billede barklund Nybegynder
28. februar 2005 - 17:16 #12
Mmmmm... :)
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