. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .


 
 
SEGÉDLETEK ActionScript

Dinamikus mozgások ActionScripttel - 2. rész
  feltöltve: 2003.11.04 | szerző: papp | olvasva: 15000 alkalommal

       
 

Egyenesvonalú egyenletesen lassuló mozgás

A moziklipet az A pontból a B pontba szeretnénk elmozdítani mégpedig úgy, hogy a mozgás sebessége folyamatosan csökkenjen (ugyanaz mint a Motion Tween esetében az Ease Out beállítás).

Rajzolj egy kört és alakítsd moziklippé. Kattints jobb egérgombbal a moziklipre, válaszd az Actions menüpontot és gépeld be az alábbi rövid kódot (labda08.fla):

onClipEvent(load) {
     _x = 100;
     _y = 45;
     celx = 500;
}

onClipEvent(enterFrame) {
     tavolsag = (celx - _x)/10;
     _x += tavolsag;
}



Vizsgáljuk meg részletesen a kódot!

onClipEvent(load) {
     _x = 100 ;
     _y = 45;
     celx = 500;
}

Meghatároztuk a moziklip kezdő koordinátáit (_x, _y) és mivel a labda egyenesvonalú mozgást fog végez ezért elég csak a mogás végpontjának az x koordinátáját megadnunk egy változóban, mégpedig a celx-ben. Eddig egyszerű! A lassuló mozgás kulcsa a következő kódsorban rejlik:

tavolsag = (celx - _x)/10;

A kiindulópont és a célpont közötti pillanatnyi távolságot (celx - _x) elosztjuk mondjuk 10-el és a tavolsag változóhoz rendeljük a kapott értéket (számoljunk! ez 500-100 = 400/10=40). A moziklip pillanatnyi x koordinátájához hozzáadjuk a tavolsag változónk értékét - tehát a 40-et, így az elmozdul 40 pixelt:

_x += tavolsag; // ugyanez leírhetó így is: this._x = this._x + tavolsag;

Amikor a következő alkalommal lefut a kód, a moziklip új pozíciója és a celx közötti távolság már csökkent (ismét számoljunk! 500-140 = 360). Ezt az új távolságot ismét elosztjuk 10-el és hozzáadjuk a mozikip x koordinátájához, tehát már csak 36 pixellel mozdul el. Ahogy csökken a távolság a két pont között, mindig kisebb értékkel növeljük a moziklip x pozícióját, így a mozgás folyamatosan lassuló lesz.

Ha változtatni szeretnénk a lassulás sebességet akkor a két pont közötti távolságot kisebb, vagy nagyobb számmal osztjuk. Módosítsuk a kódot, hogy a sebességet szépen az elején paraméterezni tudjuk (labda081.fla):

onClipEvent(load) {
     _x = 100 ;
     _y = 45;
     celx = 500;
     sebesseg = 10;
}

onClipEvent(enterFrame) {
     tavolsag = (celx - _x);
     _x += tavolsag/sebesseg;
}

Egyenesvonalú egyenletesen lassuló mozgás 2 pont között

Következzen egy kis feladat. Próbáld megoldani minél kevesebb kóddal, hogy a labda folyamatosan mozogjon az A és B pontok között:

Az egyik lehetséges megoldást megtalálod a labda09.fla -ban.

 
       
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .