Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
-
2. října 2025
-
29. října 2025
-
4. listopadu 2025
-
13. listopadu 2025
-
2. září 2025
-
15. října 2025
-
21. října 2025

Webdesign
Flash MX: Škola hrou VI.
25. dubna 2003, 00.00 | Pokračujeme s výrobou hry typu "střílečka". Tentokrát hlavně Actionscriptem.
Tento tutoriál navazuje na předchozí díl a bude hlavně o Actionscriptu. Dnes budeme tvořit toto:
Zdrojový soubor je zde.
Ovládání letadla je zabezpečeno scriptem uloženým přímo na objektu
LETADLO. Každý takto umístěný script musí začínat frází
onClipEvent (), což je velmi praktická pomůcka, určující vlastnosti
scriptu:

Z obrázku je patrná možnost výběru. Nejpoužívanějšími jsou:
onClipEvent (Load) {- script bude proveden pouze
jednou - v okamžiku načtení objektu
}
onClipEvent (EnterFrame) {- akce v každém snímku
}
případně kombinace Mouse nebo Key pro spuštění AS při stisku/pohybu myši nebo kláves.
Objekt LETADLO tedy obsahuje:
onClipEvent (enterFrame) {
if (Key.isDown(Key.RIGHT)) {
if (this._x<300) {
this._x += 5;
}
}
if (Key.isDown(Key.LEFT)) {
if (this._x>15) {
this._x -= 5;
}
}
if (Key.isDown(Key.UP)) {
if (this._y>10) {
this._y -= 5;
}
}
if (Key.isDown(Key.DOWN)) {
if (this._y<390) {
this._y += 5;
}
}
if (nabito<1) {
if (Key.isDown(Key.SPACE)) {
nabito=8;
_root.objekty.strela.gotoAndPlay (3);
_root.objekty.strela._y=_root.objekty.letadlo._y;
_root.objekty.strela._x=_root.objekty.letadlo._x;
}
} else {
nabito--;
}
}
- programový obsah závorek se provede každý snímek:
onClipEvent (enterFrame) {
}
- podmínka zjišťující stav klávesy "šipka vpravo":- je-li
podmínka splněna...
if (Key.isDown(Key.RIGHT)) {
- další podmínka:- změna pozice na ose Y
if (this._x<300) {
this._x += 5;
}
}
Nic složitého, podobný způsob jsme již použili při tvorbě minulé hry. Pro pochopení principů AS mají tyto jednoduché příklady ohromný význam a pokud sledujete náš seriál od začátku, asi jsem vás tímto moc neoslnil.
if (nabito<1) {
if (Key.isDown(Key.SPACE)) {
nabito=8;
_root.objekty.strela.gotoAndPlay (3);
_root.objekty.strela._y=_root.objekty.letadlo._y;
_root.objekty.strela._x=_root.objekty.letadlo._x;
}
} else {
nabito--;
}
Podmínka
if (nabito<1) je pouhou redukcí rychlosti střelby. Protože pro střelbu
použijeme pouze jednu kulku, je třeba zabezpečit, aby nevylétla dříve, než
předchozí střela zmizí ze scény. Proto řádek s nabito-- provádí
každý snímek snížení této proměnné o hodnotu 1. Odpočet je proveden v
případě, že proměnná nabito
>=1, a to díky části } else { :
if (nabito<1) {-
pokud není splněna podmínka...
} else {
nabito--;
}
Pro střelbu je nabito v případě, že proměnná nabito=0, a
je-li nabito, může dojít k výstřelu:
if (Key.isDown(Key.SPACE)) {
nabito=8;
_root.objekty.strela.gotoAndPlay (3);
_root.objekty.strela._y=_root.objekty.letadlo._y;
_root.objekty.strela._x=_root.objekty.letadlo._x;
}
Splněním podmínky, zjišťující stav klávesy SPACE, dojde k:
- momentálnímu vybití (nabito=8),
- spuštění akce na smínku č. 3 v objektu střela,
- umístění střely na pozici letadla.
Co se děje v objektu střela? Co jiného, než že vyletí kulka...
... akce na snímku č. 3 zastaví přehrávání (mohli jsme tedy klidně použít odkaz typu gotoAndStop místo gotoAndPlay - to nic) a hlavně načte objekt KULKA, který na tomto snímku čeká. No a následujícím scriptem umístěným na objektu KULKA mu udělíme zrychlení:
onClipEvent (enterFrame) {
if (this._x+_root.objekty.letadlo._x>370) {
_root.objekty.strela.gotoAndStop(5);
}
this._x+=40;
}
Každým snímkem se pozice na ose X změní o hodnotu 40. Vložená podmínka zajistí účinnost střely pouze na ploše scény.
Na časové ose MC OBJEKTY je na snímku č. 5 toto:
i==1 ? i=4 : i=1;
if (letadlo.hitTest(vyber.form["v"+(i)]) || letadlo.hitTest(vyber.form["v"+(i+1)]) ||
letadlo.hitTest(this.vyber.form["v"+(i+2)])) {
vybuch.gotoAndPlay(2);
vybuch._x=letadlo._x;
vybuch._y=letadlo._y;
letadlo._y=-1000;
vyber.form.stop();
}
V podstatě se jedná o to, že každým snímkem se testuje kontakt letadla se třemi vetřelci z dané formace. Formací je vždy objekt FORM, což je název instance některého z objektů f1 až f5. Všechny tyto objekty mají stejný název instance, a proto stačí odkázat script na FORM.
Kontakt je testován pokaždé s jinou trojicí vetřelců. Důvodem je snížení nároků na výkon procesoru. Frame rate je nastaven na 30 FPS, takže kontakt s každým vetřelcem je testován 15x do vteřiny.
Nejprve je provedena výměna hodnot proměnné I.
Následuje podmínka: je-li letadlo v kontaktu s vetřelcem v1 nebo v2 nebo v3
...
MC vybuch je přesunut na souřadnice letadla
letadlo je odklizeno někam stranou
a formace vetřelců jsou zastaveny.
Pozn.: Syntaxe hranatých závorek umožňuje zapsat script ve zkrácené
podobě. Pokud i=1, potom vyber.form["v"+(i+1)] není nic
jiného, než vyber.form.v2.
V objektu VYBUCH je letadlo rozděleno na 4 MC a každý obsahuje tento script:
onClipEvent (load) {
rotace = 50*Math.random()-25;
smerX = 6*Math.random()-3;
smerY = 4*Math.random()-3;
}
onClipEvent (enterFrame) {
this._rotation += rotace;
this._x += smerX;
this._y += smerY+pad;
pad += 0.1;
}
takže nejprve je proměnné rotace přiřazena hodnota z intervalu
<-25,25> dle náhodného výběru atd.
a následně jsou trosky letadla vymrštěny náhodným směrem s náhodnou
rotací a díky pad += 0.1 padají k zemi.

Zatím toho moc nesestřelíte - možná tak sami sebe. Příště to ale bude rozhodně lepší a vetřelci to poznají na vlastní kůži!
Obsah seriálu (více o seriálu):
- Flash 5: škola hrou
- Flash 5: Škola hrou II.
- Flash 5: Škola hrou III.
- flash 5: Škola hrou IV
- Flash MX: škola hrou V.
- Flash MX: Škola hrou VI.
- Flash MX: Škola hrou VII.
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
5. ledna 2017
-
24. prosince 2016
Čtyřicáté číslo internetového magazínu IDIF v roce 2016 40/2016
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
14. října 2024
-
10. září 2025
-
12. listopadu 2025
Profesionální UV Hybridní Tiskárna – EFI VUTEk GS3250LX Pro (LED)
-
24. listopadu 2025
-
28. listopadu 2025
-
13. listopadu 2025




