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

       
 

Véletlenszerű irányú mozgás

Most próbáljuk megoldani azt, hogy a 3 labda a Flash által véletlenszerűen generált pontokba végezzen lassuló mozgást (lásd. labda10.swf). Amikor a labdák megérkeznek a célpontba, a Flash újabb célpontokat generál.

Nyisd meg a labda07.fla-t és távolítsd el a ActionScript kódot a moziklipekről. Kattints az egyik moziklipre és az Actions ablakba gépeld be az alábbi kódot:

onClipEvent (load) {
     celx = Math.round(Math.random()*500)
     cely = Math.round(Math.random()*300);
     sebesseg = 4;
}

Mit csinálunk itt? A celx és cely változók véletlenszerű értéket kapnak és meghatározzák a moziklip mozgásának cél koordinátáját a színpadon. A következő lépésben kiszámoljuk a moziklip pillanatyi koordinátája és a Flash által generált koordináta közti vízszintes és függőleges távolságot:

onClipEvent (enterFrame) {
     tavolsagx = celx - _x;
     tavolsagy = cely - _y;

A távolságokat elosztjuk a sebesseg változó értékével, így megkapjuk, hogy mennyivel kell növelnünk, vagy csökkentenünk a moziklip koordinátáit. Folytatsd az alábi kóddal:

sebessegx = tavolsagx/sebesseg;
sebessegy = tavolsagy/sebesseg;
_x += sebessegx;
_y += sebessegy;

Tehát itt is a lassuló mozgást alkalmazzuk. Ahogy csökken a távolság a két pont között, mindig kisebb értékkel növeljük a moziklip x és y pozícióját, így a mozgás folyamatosan lassuló lesz. Mostmár csak ellenőriznünk kell, hogy a moziklip megérkezett-e a megjelölt pontba és ha igen, akkor azonnal új koordinátákat sorsol a Flash.

if (Math.round(_y) == Math.round(cely) && Math.round(_x) == Math.round(celx)) {
     celx = Math.round(Math.random()*500);
     cely = Math.round(Math.random()*300);
     }
}

A kész kódot másold át a másik két labdára is és módosítsd az értékeket, hogy még jobban megértsd a működését. Íme a végeredmény, egy kis kaotikus mozgás:

Kattintás helyére történő lassuló mozgás

Bárhova kattintunk az egérrel a színpadon, a moziklipünk szépen odaúszik. A trükk nagon egyszerű, a kattintás pillanatában lekérdezzük az egérmutató koordinátáit (xmouse, ymouse) és máris megkapjuk a mozgás célpontját (labda11.fla).

onClipEvent (load) {
     sebesseg = 10;
}

onClipEvent (mouseDown) {
     celx = _root._xmouse;
     cely = _root._ymouse;
}

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

Ehhez nem is fűzünk semmi magyarázatot, eléggé egyértelmű. A végeredmény:

 
       
 
 

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