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




 
 
SEGÉDLETEK ActionScript

Dinamikus mozgások ActionScripttel - 3. rész
  feltöltve: 2004.02.18 | szerző: papp | olvasva: 15111 alkalommal

       
 

A sorozat előző részeiben (első, második) megtanulhattuk ActionsScript kóddal vezérelni a Flash objektumainkat és átfutottuk a legalapvetőbb egyenesvonalú mozgásokat. Most próbáljuk kicsit továbbfejleszteni a már ismert mozgásokat és ismerjünk meg néhány újat is, mint például a szabadesés, rugós mozgás és a körmozgás.

Gyorsuló mozgás, szabadesés, gravitáció

Ha leejtünk egy tárgyat, folyamatosan gyorsul az indulási ponttól az érkezési pontig. Először vizsgáljunk meg egy olyan esetet, amikor egy nehéz tárgyat ejtünk el, ami nem fog visszapattanni a földről. Maradjunk a labdáknál, gondoljunk egy bowling golyóra ami becsapódik a földbe. Egyenesvonalú, folymatosan lassuló mozgást már készítettünk, nézzük az ellenkezőjét.

Nyissunk 600x400-as méretű mozit. Készítsünk egy új labda moziklipet, vagy nyissuk meg bármelyik .fla-t az előző segédletekből. Írjuk be a következő kódot:

onClipEvent(load) {
     gravitacio = 3;
     sebesseg = 0;
}

onClipEvent(enterFrame) {
     sebesseg += gravitacio;
     _y += sebesseg;
}

Teszteljük a mozit és láthatjuk, hogy a golyó folyamatosan gyorsuló mozgással távozik a képernyőről (labda15.fla):

Az 'elejtés' pillanatában a golyó sebessége 0, majd minden minden egyes képkockában növeljük a sebesség értékét a gravitácio változó értékével. A labda tahát minden frame-ben több utat tesz meg, ez eredményezi a gyorsuló mozgást. A Flash-nek meg kell adnunk, hogy a golyó hol érjen földet, meg kell határoznunk a mozgás végpontját. Bővítsük ki a kódot így:

onClipEvent(load) {
     gravitacio = 3;
     sebesseg = 0;
     fold = 350;
}

onClipEvent(enterFrame) {
     sebesseg += gravitacio;
     pozicio = _y + sebesseg;
     if (pozicio < fold) {
          _y += sebesseg;
     } else {
          _y = fold;
     }
}


A labda gyorsuló mozgást végez a majd hirtelen megáll a fold változóban meghatározott koordinátán, földet ért (labda16.fla):

De mi a helyzet ha egy gumilabdát ejtünk el? Visszapattan a földről, majd ahogy sebessége csökken mind kisebbeket pattog, még végül teljesen leáll. Helyezzünk el egy újabb labda példányt a színpadra a meglévő mellé. Ide írjuk be az alábbi kódot, ez egyike a lehetséges megoldásoknak:

onClipEvent(load) {
     gravitacio = 3;
     sebesseg = 0;
     fold = 350;
}

onClipEvent(enterFrame) {
     sebesseg += gravitacio;
     pozicio = _y + sebesseg;
     if (pozicio > fold) {
          _y = fold;
          sebesseg = -sebesseg*0.8;
     } else {
          _y += sebesseg;
     }
}

Remek! A golyó változatlanul becsapódik a földbe és mozdulatlan marad, a gumilabda viszont vígan pattog, legalábbis egy ideig (labda17.fla):

A kód megértéséhez már bőven megadtuk a szükséges információt a segédlet sorozat előző részeiben, aki nem teljesen érti nézze át előbb azokat. Ha már ilyen szépen pattog a labdánk, vigyünk bele egy kis interaktivitást és közben tanuljunk is valami újat... De előbb lapozzunk egyet!

 
       
 
 

© 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 >>> : .. .