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

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

** V Brně byl velký výpadek služeb UPC ** Důvodem je překopnutý páteřní kabel ** V některých lokalitách služby stále nefungují

5.  12.  2016 | Jakub Čížek | 100

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

** Zmizí klasické vyhledávače ** Budeme programovat buňky ** Kvantové počítače překonají šifry

6.  12.  2016 | Jakub Čížek | 34

ASUS ZenBook 3 se začal prodávat v Česku. Je ve všem lepší než MacBook, ale bude to stačit?

ASUS ZenBook 3 se začal prodávat v Česku. Je ve všem lepší než MacBook, ale bude to stačit?

** Novinka od Asusu míří přímo proti MacBooku od Applu ** Nabídne daleko více výkonu za stejné peníze

2.  12.  2016 | David Polesný | 145

11 tipů na dobrý stolní počítač: od základu po herní mašiny

11 tipů na dobrý stolní počítač: od základu po herní mašiny

** Postavte si stolní počítač! Máme pro vás 11 vzorových sestav s rozpisem komponent ** Většina tipů cílí na hráče, věnujeme se ale i základnímu PC a počítačům na střih videa ** Nadělte si nový počítač třeba pod stromeček

5.  12.  2016 | Adam Kahánek | 73


reklama