Ovládanie pohybu objektu šípkami

V tomto príklade budeme veľmi jednoduchým spôsobom vo Flash aplikácií overovať, či uživateľ stlačil na klávesnici šípku na udanie smeru, a keď áno, pohneme daným smerom náš objekt (symbol).

Najprv si nakreslíme objekt, ktorým budeme pohybovať. V mojom prípade autíčko.

Auticko - ovladanie pohybu pomocou ActionScript 2Keď sme hotoví, skonvertujeme si kresbu na Symbol typu MovieClip (klávesová skratka F8).

Keďže pri použití ActionScript 2 môžeme príkazy vkladať nielen do Framov, ale aj do Symbolov (typu Button a MovieClip), využijeme túto možnosť. Pri použití ActionScript 3 táto možnosť zaniká.

Označíme náš Symbol (MovieClip) s autíčkom a otvoríme ActionScript editor (F9).

Teraz zapisujeme príkazy priamo pre tento symbol a preto ich nemôžeme písať len tak “na voľno”, ako pri zápise na Frame. Musíme určiť v akej situácií sa má daný kód spustiť (napríklad pri načítani symbolu, po kliknutí naň, atď…)

My chceme aby sa po načítaní nášho symbolu nastavila premenná, ktorá bude určovať “Rýchlosť” – to znamená počet pixelov o ktoré autíčko poskočí.  Kedy bol symbol načítaný pre nás odsleduje Event-Handler (oblsuha události) onClipEvent(load).

onClipEvent(load)
{
rychlostPohybu = 10;
}

Máme nastavené, že autíčko sa bude pohybovať o 10 pixelov (samozrejme je možné hodnotu zväčšiť alebo zmenšiť).

Pridáme kód, ktorý sa spustí po zobrazení autíčka na Stage. Tento kód bude sledovať či bola stlačená klávesa (na klávesnici) a pokiaľ áno, tak ktorá.
Následne pomocou podmienok určíme, čo sa má v prípade stlačenia tej ktorej klávesy stať.

onClipEvent(enterFrame) //nasledujúci kód sa vykoná pri zobrazení symbolu na Stage
{

takže keď sa autíčko zobrazí na stage, a bola stlačená šípka vpravo zmení sa pozícia autíčka. Zároveň ho necháme otočiť o 90 stupňov, aby bolo nasmerované správnym smerom.

if(Key.isDown(Key.RIGHT))
{
this._x +=  rychlostPohybu; //pripočítaj k aktuálnej pozíci X hodnotu rychlostPohybu
this._rotation = 90; //otoč autíčko o 90 stupňov
}

Stlačnie klávesy pre nás odlsedoval objekt (knižnica) Key, konkrétne metóda isDown. Metóda isDown má následne argument (parameter) určujúci stlačenie ktorej klávesy má sledovať. Rovnako vytvoríme Event-Handler aj pre ďalšie klávesy:

if(Key.isDown(Key.LEFT))
{
this._x -=  rychlostPohybu; //od pozície X odpočítaj hodnotu rychlostPohybu
this._rotation = -90; //otoč autíčko o -90 stupňov
}

if(Key.isDown(Key.UP))
{
this._y -=  rychlostPohybu;
//od pozície Y odpočítaj hodnotu rychlostPohybu
this._rotation = 0; //otoč autíčko na 0 stupňov - pôvodná poloha
}

if(Key.isDown(Key.DOWN))
{
this._y +=  rychlostPohybu;
//k pozícii Y opripočítaj hodnotu rychlostPohybu
this._rotation = 180; //otoč autíčko na 180 stupňov
}
}

Po spustení aplikácie (Ctrl + Enter) môžeme autíčkom pohybovať. Samozrejme existujú efektívnejšie metódy ktoré by sme použili, ale na začiatok môže postačovať.

Kompletný kód pre pohyb autíčka (MovieClip symbol)


onClipEvent(load)
{
rychlostPohybu = 10;
trace(rychlostPohybu)
}

onClipEvent(enterFrame)
{
if(Key.isDown(Key.RIGHT))
{
this._x +=  rychlostPohybu;
this._rotation = 90;
}

if(Key.isDown(Key.LEFT))
{
this._x -=  rychlostPohybu;
this._rotation = -90;
}

if(Key.isDown(Key.UP))
{
this._y -=  rychlostPohybu;
this._rotation = 0;
}

if(Key.isDown(Key.DOWN))
{
this._y +=  rychlostPohybu;
this._rotation = 180;
}
}

Reklamy

Pridaj komentár

Zadajte svoje údaje, alebo kliknite na ikonu pre prihlásenie:

WordPress.com Logo

Na komentovanie používate váš WordPress.com účet. Odhlásiť sa / Zmeniť )

Twitter picture

Na komentovanie používate váš Twitter účet. Odhlásiť sa / Zmeniť )

Facebook photo

Na komentovanie používate váš Facebook účet. Odhlásiť sa / Zmeniť )

Google+ photo

Na komentovanie používate váš Google+ účet. Odhlásiť sa / Zmeniť )

Connecting to %s

%d bloggers like this: