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


 
 
SEGÉDLETEK Flash alapok

Billentyűzet eseménykezelés (AS3)
  feltöltve: 2008.03.02 | szerző: Ducky | olvasva: 675 alkalommal

   
 

Vezérlés a billentyűkkel


Ezt a példát frame-re írva készítjük el. Hozzunk létre egy új AS3 mozit, azaz az új mozi készítésekor CS3-ban adjuk meg a Flash file (ActionScript 3.0) beállítást. Az új mozi paramétereit állítsuk be a lenti képen látható módon. Szélesség 550 pixel, magasság 200 pixel, egy tetszőleges világosabb színű háttér és 36 fps Frame rate.

Kép 6

Szükségünk lesz egy Movie Clip-re (mc), amelyet vezérelni fogunk a billentyűzetek segítségével. Kell még egy keret is, ami behatárolja a mozit és ezzel együtt a mozgást is. Készítsünk tehát három réteget a flash moziban és nevezzük el a lenti képen látható módon.

Kép 7

Most a keret rétegen rajzoljunk egy keretet, ami az egész mozit körbeveszi. A kör rétegen hozzunk létre egy mc-t, ami egy kör, vagy bármi más. Az instance neve legyen vezereltKor. Ezek az összetevők kellenek a program működéséhez. A keretet ugyan el lehet hagyni, de így jobban kivehető lesz a mozgás határvonala a mozin belül.

Kép 8

Az AS elnevezésű rétegen hozzuk létre a vezérlő kódot, ami majd a billentyűk segítségével mozgatja a kört a megrajzolt keret határain belül. A feladat tehát az, hogy ha a bal kurzor nyilat nyomjuk le a billentyűzeten, akkor balra mozogjon a kör, ha a jobb nyilat nyomjuk le, akkor jobbra mozogjon a kör. Ugyanez érvényes a fel és le nyilakra is. Az AS réteg kulcskockájára írjuk tehát a lent látható kódot.

// sebességek és határok
var xSebesseg:int = 0;
var ySebesseg:int = 0;
var balHatar:Number = vezereltKor.width / 2;
var jobbHatar:Number = stage.stageWidth - ( vezereltKor.width / 2 );
var felsoHatar:Number = vezereltKor.height / 2;
var alsoHatar:Number = stage.stageHeight - ( vezereltKor.height / 2 );

// események létrehozása
stage.addEventListener ( KeyboardEvent.KEY_DOWN, keydownEsemeny );
stage.addEventListener ( KeyboardEvent.KEY_UP, keyupEsemeny );
vezereltKor.addEventListener ( Event.ENTER_FRAME, enterframeEsemeny );

// ENTER_FRAME függvény
function enterframeEsemeny ( event:Event ):void {
    event.target.x += xSebesseg;
    event.target.y += ySebesseg;
    if ( event.target.x <= balHatar ) {
        event.target.x = balHatar;
    }
    if ( event.target.x >= jobbHatar ) {
        event.target.x = jobbHatar;
    }
    if ( event.target.y <= felsoHatar ) {
        event.target.y = felsoHatar;
    }
    if ( event.target.y >= alsoHatar ) {
        event.target.y = alsoHatar;
    }
}

// KEY_DOWN függvény
function keydownEsemeny ( event:KeyboardEvent ):void {
    if ( event.keyCode == 37 ) {
        xSebesseg = -3;
    }
    if ( event.keyCode == 39 ) {
        xSebesseg = 3;
    }
    if ( event.keyCode == 38 ) {
        ySebesseg = -3;
    }
    if ( event.keyCode == 40 ) {
        ySebesseg = 3;
    }
}

// KEY_UP függvény
function keyupEsemeny ( event:KeyboardEvent ):void {
    if ( event.keyCode == 37 || event.keyCode == 39 ) {
        xSebesseg = 0;
    }
    if ( event.keyCode == 38 || event.keyCode == 40 ) {
        ySebesseg = 0;
    }
}

//

Alapvetően működésében ugyanaz a kód, mint amit a segédlet elején készítettünk el, csak kicsit kiegészült pár művelettel. Az xSebesseg és az ySebesseg változók tárolják el a mozgás x-y sebességét. Alap értékük 0 lesz. A balHatar változóba kerül a mozgás bal határértéke, a jobbHatar változóban lesz a jobb határérték, a felsoHatar változóba kerül a felső határérték és az alsoHatar változóban lesz a mozgás alsó határértéke. Ezután a már ismert módon létrehozzuk az eseményeket. Az újdonság itt az ENTER_FRAME esemény, amelyet a vezereltKor, azaz a kör mozihoz rendelünk. Az enterframeEsemeny() függvény lesz tehát a kör mozi folyamatosan futó eseménye. A függvényben található a mozgás, azaz az x és y értékek megfelelő módosítása a sebesség változók alapján és a határok ellenőrzése elágazásokkal. Ha a kör eléri valamelyik határt, akkor nem halad tovább abban az irányban. A keydownEsemeny() lép életbe a gombok lenyomásakor. Minden kurzornyílnak megfelelően adjuk meg a sebesség változók értékét, így a kör arra fog mozogni, amerre a lenyomott nyíl mutat. Végezetül a keyupEsemeny() a gombok felengedésekor lép életbe és törli a sebességek értékét a felengedett nyilaknak megfelelően. Mentsük el a mozit és teszteljük. Ezzel el is érkeztünk a segédlet végéhez. Remélhetőleg sokaknak nyújt némi segítséget az alapokhoz. Jó munkát és sok sikert. További példák eseményekhez a Ducky AS3 blogon is megtalálhatóak.
 
   
 
 

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