Avatar billede thulstrup Nybegynder
13. september 2002 - 10:03 Der er 13 kommentarer og
1 løsning

shape tween v.h.a. action script

Kort og kontant spørgsmål:
Er det muligt at lave shape tweens med actions script?
Avatar billede barklund Nybegynder
13. september 2002 - 10:28 #1
Nope... Ikke fuldt ud dynamisk...

Du kan lave det sindsyge beregner i MX med først er array af alle punkterne og kurverne i startfiguren og det samme for slutfiguren og så beregne de mellemliggende trin, men det bliver noget utroligt besværligt rod...

Hvad vil du helt præcist opnå?
Avatar billede thulstrup Nybegynder
13. september 2002 - 10:46 #2
Det er egentlig meget simpelt det jeg vil opnå. Lad os sige at jeg har en firkant der hedder:

    _root.lineStyle(1, 0x000000, 100);
    _root.moveTo(25,25);   
    _root.lineTo(175, 25);
    _root.lineTo(175, 175);
    _root.lineTo(25, 175);
    _root.lineTo(25, 25);

så vil jeg lave en shape tween horisontalt til den er X bred, hvor efter jeg vil lave en shape tween vertikalt til den er Y høj.
Avatar billede barklund Nybegynder
13. september 2002 - 10:55 #3
Det er jo nemt nok... Det kunne jo laves med motion tween på bredde og højde... Hvor mange frames for hver transition ønsker du?
Avatar billede barklund Nybegynder
13. september 2002 - 10:56 #4
Og hvad er X og Y?
Avatar billede thulstrup Nybegynder
13. september 2002 - 11:10 #5
ok lad os sige:
20 frames for den horisontale transition
10 frames for den vertikale transition
X = 500px
Y = 350px
Avatar billede barklund Nybegynder
13. september 2002 - 11:25 #6
Jeg prøver - det hele er script i første frame af din stage (jeg har ikke mx foran mig, så jeg satser lidt :o):

start_x = 25;
start_y = 25;
cur_width = 150;
cur_height = 150;
transitions = [{dx: 0, dy: 0, f: 0},{dx: 350, dy: 0, f: 20},{dx: 0, dy: 200, f: 30}];
pointer = 0;counter = 0;

_root.onEnterFrame = function() {
    with (this.createEmptyMovieClip("box", 10)) {
        _x = start_x;
        _y = start_y;
        lineStyle(1,0,100);
        lineTo(cur_width,0);
        lineTo(cur_width,cur_height);
        lineTo(0,cur_height);
        lineTo(0,0);
    }
    if (transitions[pointer].f == counter) {
        pointer++;
        dx = transitions[pointer].dx/transitions[pointer].f;
        dy = transitions[pointer].dy/transitions[pointer].f;
    }
    cur_width += dx;
    cur_height += dy;
}
Det skulle virke... Fortæl hvad der sker, hvis det er lidt galt...

/Barklund
Avatar billede thulstrup Nybegynder
13. september 2002 - 11:36 #7
Flot klaret uden at have mx ved hånden!
Der er et lille problem idet den horosontale transition ikke stopper ved X=500, men bare forsætter der ud af :-)

En anden ting. Er det muligt at lave det så tweeningen sker til begge sider på samme tid (altså til højre og venstre) således at firkantens center hele tiden er det samme sted?
Avatar billede barklund Nybegynder
13. september 2002 - 12:15 #8
åhja... Glemte en "counter++;"... Den skal ligge til allersidst inden den sidste "}"...

Og ja, det andet kan også lade sig gøre... Hvor skal centrum være til at starte med?
Avatar billede thulstrup Nybegynder
13. september 2002 - 12:22 #9
Ok, det virker fint med counteren
Sæt centrum til 300,200
Avatar billede barklund Nybegynder
13. september 2002 - 12:36 #10
Prøv følgende... Skulle virke nogenlunde...

start_x = 300;
start_y = 200;
cur_width = 150;
cur_height = 150;
transitions = [{dx: 0, dy: 0, f: 0},{dx: 350, dy: 0, f: 20},{dx: 0, dy: 200, f: 30}];
pointer = 0;
counter = 0;
_root.onEnterFrame = function() {
    with (this.createEmptyMovieClip("box", 10)) {
        _x = start_x;
        _y = start_y;
        lineStyle(1,0,100);
        moveTo(-cur_width/2,-cur_height/2);
        lineTo(-cur_width/2,cur_height/2);
        lineTo(cur_width/2,cur_height/2);
        lineTo(cur_width/2,-cur_height/2);
        lineTo(-cur_width/2,-cur_height/2);
    }
    if (transitions[pointer].f == counter) {
        pointer++;
        if (pointer == transitions.length) {
            delete this.onEnterFrame;
        } else {
            dx = transitions[pointer].dx/transitions[pointer].f;
            dy = transitions[pointer].dy/transitions[pointer].f;
        }
    }
    cur_width += dx;
    cur_height += dy;
    counter++;
}


Hvis den skal gøre "noget mere", når den er færdig, så kan det tilføjes efter linien "delete ..." (måske en goto eller noget)...

/Barklund
Avatar billede thulstrup Nybegynder
13. september 2002 - 12:50 #11
Super, det var lige det jeg ledte efter!!
Hvis du vil have point må du lige komme med et svar.
Avatar billede barklund Nybegynder
13. september 2002 - 16:18 #12
Virkede det...? Sejt...

(Han kan stadig lave det i hånden, kan han :o)

/Barklund
Avatar billede thulstrup Nybegynder
13. september 2002 - 18:17 #13
Jeg må nok indrømme, at jeg er lidt små imponeret over at du kodede det i hånden.
Avatar billede barklund Nybegynder
16. september 2002 - 19:20 #14
Tak for point, i hvert fald! :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