reklama

Začínáme s Flash MX 2004 – 27. díl – závodní auto – dokončení

Dnes budeme pokračovat v rozdělané práci z minulého dílu, připojíme zvukový doprovod během jízdy auta, budeme počítat opotřebení při výjezdu mimo dráhu a doplníme naši hru o počítadlo ujetých kol.

Úkolem dnešní lekce bude přidání zvukového doprovodu, který by měl symbolizovat zvuk motoru auta. Nebudeme se pouštět do složité analýzy pohybujícího se auta, použijeme pouze jeden zvuk, který budeme podle aktuální rychlosti zesilovat nebo naopak zeslabovat.

Přidáme funkci, zobrazující opotřebení auta, které bude narůstat při pohybu mimo vyznačenou cestu. Jakmile dosáhne opotřebení hodnoty 100, auto zastaví a další pohyb nebude již možný. Poslední funkcí bude počítadlo ujetých kol.

Úprava prostředí

Otevřeme si zdrojový soubor z minulé lekce, který si můžeme stáhnout zde. Nejdříve zobrazíme panel vlastností a změníme velikost plochy dokumentu na 800 x 600px. Nakreslíme větší dráhu a budeme tak potřebovat více místa. Můžeme také změnit barvu pozadí na zelenou.

Klepněte pro větší obrázek

Upravíme objekt „okraj“ tvořící hranice a nakreslíme si realističtější závodní dráhu. Prázdné místo, které v tomto objektu vymezuje hranice pohybu auta, překryjeme objektem, který bude představovat cestu. Tento objekt umístíme do nové vrstvy, kterou umístíme nad vrstvu s objektem „okraj“ na hlavní scéně.

Klepněte pro větší obrázek

Pořád ale máme objekt auta moc velký, otevřeme si proto objekt „auticko“, klikneme na vložený obrázek, zobrazíme si panel pro změnu velikosti „Transform“ a upravíme velikost objektu na 15%.

Klepněte pro větší obrázek

Import zvuku

Prostředí máme připravené, vložíme tedy do knihovny zvukový soubor. Zvolíme „File – Import – Import to Library“ a vybereme zvukový soubor, který bude reprezentovat hluk motoru. Pokud nemáte vhodný soubor k dispozici, můžete si jej stáhnout zde.

Klepněte pro větší obrázek

Vložili jsme si do knihovny symbolů zvuk. Ten budeme chtít pomocí AS importovat do animace a dále jej ovládat. Abychom mohli zvuk používat, musíme jej exportovat společně se swf souborem a přiřadit mu identifikační název. 

Otevřeme si proto knihovnu symbolů, najdeme zvukový soubor a klikneme na něj pravým tlačítkem myši. Z menu vybereme „Linkage“.

Klepněte pro větší obrázek

Otevře se okno, ve kterém zaškrtneme „Export for ActionScript“ a do pole „Identifier“ napíšeme název, pod kterým budeme zvuk importovat, například „motor“.

Klepněte pro větší obrázek

Zvuk máme upraven, vytvoříme si ještě objekt, který bude zobrazovat aktuální stav opotřebení vozidla. Bude se jednat o MC, ve kterém bude barevná stupnice. Nad stupnicí bude MC, který  jí bude maskou. MC v masce budeme pomocí AS zvětšovat a odkrývat tak onu stupnici.

Do pravého horního rohu na ploše nakreslíme obdélníček, výplň nastavíme přechodovou od modré směrem k červené barvě. Klikneme pravým tlačítkem myši na vytvořený objekt a zvolíme „Convert to Symbol“.

Klepněte pro větší obrázek

Nezapomeneme pojmenovat instanci objektu na panelu vlastností – „opotrebeni“.
Dvojklikem na vytvořený objekt jej otevřeme. Přidáme další vrstvu, do které umístíme přesnou kopii na stejné místo (Ctrl+C a následně v nové vrstvě Ctrl+Shift+V) nakresleného obdélníku. Kopii změníme na MC, u kterého při změně umístíme registrační bod do levého horního rohu.

Klepněte pro větší obrázek

Instanci klipu pojmenujeme na panelu vlastností „opotrebenimaska“. Klikneme pravým tlačítkem myši na vrstvu s nově vytvořeným obdélníkem a zvolíme „Mask“.

Klepněte pro větší obrázek

Vrátíme se na hlavní scénu a na některém místě nakreslíme přes cestu rovnou čáru, která bude symbolizovat start. Čáru změníme na MC.

Klepněte pro větší obrázek

Vytvoříme kopii vytvořeného objektu čáry a umístíme jí na druhou stranu cesty (naproti, zhruba do poloviční vzdálenosti od startu). Tento objekt nám bude sloužit jako indikátor průjezdu auta, bude nám nulovat proměnnou, pomocí které zabráníme neoprávněnému přičítání kol při projíždění cílem sem a tam.

Poslední úpravou bude vložení dynamického textového pole na hlavní scénu, které pojmenujeme „inf“. V tomto poli budeme zobrazovat informace o projetých kolech.

Úprava AS

S grafickými symboly jsme hotovi, nyní už jen upravíme některé části kódu. Klikneme na objekt autíčka na hlavní ploše, otevřeme panel akcí a začneme upravovat kód. Nejdříve změníme část, která se provede ihned při načtení:

onClipEvent (load) {
 rychlost = 0;
 zvukMotoru = new Sound();
 zvukMotoru.attachSound("motor");
 zvukMotoru.setVolume(0);
 zvukMotoru.start(0, 9999);
 opotrebeni = 0;
}

Všimneme si identifikátoru „motor“, kterým určujeme, jaký zvuk budeme do nového objektu vkládat. U metody start, si všimneme dvou čísel, parametrů, kde první určuje čas v sekundách, od kterého se má zvuk začít přehrávat, druhé číslo určuje počet opakování. My chceme, aby se zvuk neustále přehrával, proto volíme vysokou hodnotu opakování.

V další části jsou jen drobné úpravy, ale lepší bude, když jí zde zveřejním celou, bude to snad přehlednější:

onClipEvent (enterFrame) {
 if (predX != undefined && predY != undefined) {
  rozX = predX-this._x;
  rozY = predY-this._y;
  aktRychlost = Math.sqrt(Math.pow(rozX, 2)+Math.pow(rozY, 2));
  if (aktRychlost<6 && aktRychlost>-6) {
   vol = Math.abs(aktRychlost)*8+10;
   zvukMotoru.setVolume(vol);
  }
 }
 predY = this._y;
 predX = this._x;
 if (Key.isDown(Key.UP)) {
  rychlost += 2;
 }
 if (Key.isDown(Key.DOWN)) {
  if (rychlost>-3) {
   rychlost -= 1;
  }
 }
 if (Key.isDown(Key.LEFT) && Math.abs(rychlost)>0.2) {
  this._rotation -= 10;
 }
 if (Key.isDown(Key.RIGHT) && Math.abs(rychlost)>0.2) {
  this._rotation += 10;
 }
 if (zpomalit) {
  rychlost = rychlost/1.5;
 }
 xpozice = Math.sin(_rotation*(Math.PI/180))*rychlost;
 ypozice = Math.cos(_rotation*(Math.PI/180))*rychlost*-1;
 if (this._parent.okraj.hitTest(this._x+xpozice, this._y+ypozice, true)) {
  rychlost = rychlost/20;
  opotrebeni += 0.5;
 }
 if (opotrebeni<101) {
  this._parent.opotrebeni.opotrebenimaska._xscale = opotrebeni;
  this._x = this._x+Math.sin(_rotation*(Math.PI/180))*rychlost;
  this._y = this._y+Math.cos(_rotation*(Math.PI/180))*rychlost*(-1);
 } else {
  this._parent.inf.text = "Auto je nepojízdné!";
  zvukMotoru.stop();
 }
}

Na začátku nám přibyla funkce pro změnu hlasitosti zvuku. Ta se provádí pomocí metody setVolume, jejíž parametr je zřejmý a určuje hodnotu hlasitosti od 0 do 100.  My si jako pomocnou proměnnou vypočítáme hodnotu aktuální rychlosti (vzdálenost, kterou objekt právě urazil) a podle této hodnoty určujeme hlasitost.

Hlasitost zvyšujeme, pouze pokud se rychlost pohybuje v mezích +/- 6 a dále nezvyšujeme hodnotu hlasitosti nad 50, nechceme se rušit nadměrným hlukem motoru.

Nakonec jsme doplnili funkci zvyšující hodnotu opotřebení vozidla. Neustále vyhodnocujeme její hodnotu, a pokud se rovná 100, zastavíme auto a do textového pole (inf) na hlavní scéně vypíšeme informaci o zastavení vozidla. Podle hodnoty proměnné „opotrebeni“ také rozšiřujeme masku nad indikátorem opotřebení vozidla.

Další změna kódu je již kosmetická:

onClipEvent (keyUp) {
 klavesa = Key.getCode();
 if (klavesa == 38 || klavesa == 40) {
  zpomalit = true;
 }
}
onClipEvent (keyDown) {
 zpomalit = false;
}

Zde jsme upravili kód, aby auto zpomalovalo skutečně jen při uvolnění šipky nahoru nebo šipky dolu.

Klikneme nyní na objekt, který symbolizuje start, otevřeme si panel akcí a vepíšeme do něj:

onClipEvent (load) {
 pocetKol = 0;
 this._parent.casovac = false;
}
onClipEvent (enterFrame) {
 this._parent.inf.text = "Okruhů ujeto: " + pocetKol;
 if (this.hitTest(this._parent.auticko) == true && this._x>Xpozice) {
  if (this._parent.casovac) {
   pocetKol++;
   this._parent.casovac = false;
  }
 }
 Xpozice = this._parent.auticko._x;
}

Tímto skriptem počítáme ujetá kola, jejich počet zobrazujeme v textovém poli (inf). Proměnnou „casovac“ zajišťujeme, že auto projelo skutečně celou trasu, proto na scéně klikneme na objekt, který jsme umístili na druhou stranu než je start a na panelu akcí mu vepíšeme tento kód:

onClipEvent (enterFrame) {
 if (this.hitTest(this._parent.auticko)) {
  this._parent.casovac = true;
 }
}

Tímto máme zajištěno, že auto musí opravdu projet celé kolo. Je sice možné jet autem v protisměru, dotknout se objektu a jet zase zpátky, ale na více „vychytávek“ už nemáme prostor.

Nakonec už jen umístíme autíčko za start a můžeme závodit.

Dnešní ukázku si můžete prohlédnout zde.
Zdrojový soubor ke stažení zde.

Témata článku: Software, Programování, Flash, Motor, Import, Convert

2 komentáře

Nejnovější komentáře

  • gully, gully 19. 9. 2005 1:47:22
    V textu je vložen špatný obrázek č. 9 - místo něj je tam podruhe obr. č. 8.
  • gully, gully 19. 9. 2005 0:49:02
    http://diskuse-zaciname-s-flash-mx-2004.wz.cz
reklama
Určitě si přečtěte

Vyzkoušeli jsme FM štěnici: Když si vtipálci hrají na pirátské rozhlasové vysílání

Vyzkoušeli jsme FM štěnici: Když si vtipálci hrají na pirátské rozhlasové vysílání

** Dnes žádnou elektroniku programovat nebudeme ** Štěnice totiž funguje sama o sobě ** Stačí připojit baterii a naladit frekvenci

22.  1.  2017 | Jakub Čížek | 29

Microsoft: Zbavte se už konečně zastaralých a děravých Windows 7

Microsoft: Zbavte se už konečně zastaralých a děravých Windows 7

** Microsoft pomalu začíná kritizovat svůj nejpopulárnější OS ** Chce konečně dostat podniky na Desítky ** Bezpečnostní podpora Sedmiček vydrží ještě necelé tři roky

17.  1.  2017 | Jakub Čížek | 408

Takto si špičkoví grafici představují nový Facebook. S čistým vzhledem a bez reklam

Takto si špičkoví grafici představují nový Facebook. S čistým vzhledem a bez reklam

** Design Facebooku se delší dobu nemění a pro mnohé je nudným ** Grafici zkouší navrhovat nové koncepty toho, jak by mohla síť vypadat ** Hlasujte pro nejzdařilejší návrh

22.  1.  2017 | Stanislav Janů | 63

Umělá inteligence dokáže ze snímků srdce předpovědět, kdy zemřete

Umělá inteligence dokáže ze snímků srdce předpovědět, kdy zemřete

** Strojové učení lze skvěle použít pro vylepšení modelů pro předpověď srdečních komplikací ** Nová technologie umožňuje přesněji určit rizikové pacienty ** Dřívější diagnostika může díky včasně léčbě do budoucna zachránit životy

21.  1.  2017 | Karel Javůrek | 7

8 produktů, o kterých byste neřekli, že nesou značku Apple

8 produktů, o kterých byste neřekli, že nesou značku Apple

** Věděli jste, že Apple vyvinul celkem 45 modelů tiskáren? ** ** Monitor na výšku, plotter nebo herní konzole - to vše měl Apple ve své nabídce ** Většinu z těchto produktů pohřbil Steve Jobs

19.  1.  2017 | Stanislav Janů | 43


Aktuální číslo časopisu Computer

99 nejlepších programů pro váš počítač

Zvykejte si na umělou inteligenci

Velké testy PC zdrojů a gamepadů

Alternativní zdroje energie

reklama
reklama