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

       
 

A segédlet sorozat első részében megismerkedhettünk a legalapvetőbb ActionScript mozgásokkal. Láthattunk néhány egyszerű példát a moziklipek pár sor kóddal történő irányítására. Ebben a részben a válztozó sebességű, valamint a felhasználó által irányítható mozgásokról lesz szó. Ez utóbbi elsajátítása nélkülözhetetlen például a Flash játékok készítésénél.

Az segédlet első részét a labda07.fla pédával fejeztük be és azt ígértük, hogy a következő részben részletesen megvizsgáljuk a forráskódot, hogy minden érthető legyen. Egyúttal egy csomó dolgot egyszerűsítünk a kódban. Akkor hát nézzük...


A képernyőn 3 labda mozog diagonálisan és amikor elérik a képernyő szélét, ellentétes irányba haladnak tovább. A labdák ütközését itt nem ellenőrizük (áthaladnak egymáson), talán azt egyik következő részben. Alapvetően a 06.fla példától csak annyiban különbözik a jelenlegi, hogy egyszerrre növeljük az _x és _y koordinátákat (így a mozgás diagonális) és a kódot nem a fő idősíkon hanem a 3 moziklipen helyeztük el.

A moziklip betöltésekor öt változót határozuk meg. A labda vízszintes és a függőleges mozgásának a sebességét (sebx, seby), a labda szélességének felét (sugar) és lekérdezzük a Flashtől a színpad pontos méretét (szinpad1, szinpad2) a Flash MX-ben újdonságnak számító Stage objektum segítségével:

onClipEvent(load) {
     sebx = 5;
     seby = 5;
     sugar = this._width/2;
     szinpad1 = Stage.height;
     szinpad2 = Stage.width;
}


A Stage.width és Stage.height beépített értékek és a szinpad szélességét és magasságát adják vissza pixelekben. Azért hasznos, mert nem kell átírni a szinpad1, szinpad2 változók értékeit, ha bármikor változtatnánk a színpad méretén. Rövidíteni lehet a sugar = this._width/2; kódsort a következőképpen: sugar = _width/2;, tehát elhagyható a this.

Nézzük az onClipEvent (enterFrame) tartalmát, tudjuk az itt elhelyezett utasítások a mozi minden egyes Frame-jében végrehajtódnak. Folyamatosan növeljük a moziklip _x és _y koordinátáját és közben ellenőrizzük, hogy elértük-e a színpad széleit. Ha a labda _y koordinátája elérte a színpad alját (szinpad1 - sugar), vagy teteját (0+sugar), a sebesség változó értékét ellentétes előjellel látjuk el, így a labda az ellentétes irányba halad tovább. A segédlet előző részében már kitértünk arra, hogy miért is van szükség a sugar változóra, de vegyük át még egyszer. Mivel a labda regisztrációs pontja középen van, a sugar értéket színpad széleinek koordinátához értelemszerűen hozzáadjuk illetve kivonjuk, mindezt azért, hogy a moziklip szélei pontosan érintkezzenek a színpad széleivel. Ha a sugar változót kihagyjuk, a labda félig elhagyja a színpadot.

onClipEvent(enterFrame) {
     if (_y > (szinpad1 - sugar)) {
     _y = szinpad1 - sugar;
     seby = -seby;
     } else if (_y < 0 + sugar) {
          _y = 0 + sugar;
          seby = -seby;
     } else {
          _y += seby;
     }

Észrevehettük, hogy a this._y helyett következetesen csak _y -t használtunk, tehát a this itt is kihagyható. Ugyanígy ellenőrizzük a labda _x koordinátáját is:

     if (_x > (szinpad2 - sugar)) {
          _x = szinpad2 - sugar;
          sebx = -sebx;
     } else if (_x < 0 + sugar) {
          this._x = 0 + sugar;
          sebx = -sebx;
      } else {
     _x += sebx;
     }
}

Mindhárom labda esetében ugyanezt a kódot alkalmaztuk, de különböző sebesség értékekkel. Hol is tartunk? Sikerült mozgásba hozni a moziklipjeinket, meg tudjuk határozni a mozgás irányát és határok közé tudjuk szorítani a mozgást. Nézzük, hogyan tudjuk a mozgás sebességét dinamikusan változtatni...

 
       
 
 

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