Flash MX: Škola hrou VII. - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

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:



Webdesign

Flash MX: Škola hrou VII.

10. června 2003, 00.00 | Náš seriál se zabývá tvorbou her v programu Flash MX. V dnešním dílu donkončíme návrh jednoduché střílečky.

V předchozích dvou dílech seriálu jsme tvořili střílečku. Máme připraveny formace vetřelců a střílející letadlo, které dnes naučíme zasáhnout cíl.

Nejprve vytvoříme výbuch zasaženého cíle. Bude jím MC ZASAH umístěný v MC OBJEKTY. Zvolil jsem výbuch založený na stejném principu jako výbuch letadla - ZASAH je rozdělen na několik částí, z nichž každá obsahuje:

onClipEvent (load) {
    rotace = 50*Math.random()-25;
    smerX = 6*Math.random()-3;
    smerY = 4*Math.random()-3;
    zmiz = 3*Math.random()+1;
}
onClipEvent (enterFrame) {
    _rotation += rotace;
    _x += smerX;
    _y += smerY+pad;
    pad += 0.1;
    if (zmiz<pad) {
        _visible = 0;
    }
}

Výbuchem se každý úlomek vydá vlastním směrem a po jisté době, stanovené hodnotou ZMIZ, zmizí ze scény. Vše zajišťují náhodně generovaná čísla, takže každý výbuch je jiný.

Na objektu KULKA jsme minule začali tvořit script, který již na objektu nenaleznete. Ne že bychom jej nepotřebovali, ale abychom více využili verzi Flash MX, je script umístěn přímo na časové ose objektu:

cestaV = _root.objekty.vyber.form;
this.onEnterFrame = function() {
 for (i=6; i>=1; i--) {
  if (this.hitTest(cestaV["v"+(i)])) {
   cislov = i;
  }
 }
 if (cislov) {
  _root.attachMovie("zasah","zasah"+cislov,cislov+10);
  _root["zasah"+cislov]._x = cestaV["v"+(cislov)]._x;
  _root["zasah"+cislov]._y = cestaV["v"+(cislov)]._y+160;
  _root["zasah"+cislov].gotoAndPlay(2);
  cestaV["v"+(cislov)].unloadMovie();
  _root.score++;
  _root.objekty.letadlo.nabito = 3;
  _root.objekty.strela.gotoAndStop(1);
 } else if (_x+_root.objekty.letadlo._x>370) {
  _root.objekty.strela.gotoAndStop(5);
 }
 _x+=40;
}

Každému, kdo viděl předchozí díly, je již jasné, že jde opět o script pro akci v každém snímku (tedy kromě prvního řádku). V první části (řádek 3-7) program zjistí, který objekt je zasažen a pořadové číslo vetřelce přiřadí proměnné CISLOV. Zjištění je provedeno v pořadí od posledního k prvnímu. To proto, aby v případě zásahu dvou objektů, vybuchl ten nejbližší (bude při výstřelu pravděpodobně nejblíže k letadlu). No a je-li někdo zasažen (if (cislov)), bude na jeho pozici připojen MC ZASAH, který zajistí výbuch a původní létající objekt bude odstraněn.

Do scény lze vkládat objekty přímo z knihovny. Také hlavní časová osa obsahuje příkaz attachMovie:

attachMovie("mrak", "mrak1", 20);
attachMovie("mrak", "mrak2", 21);
attachMovie("mrak", "mrak3", 22);

Jednoduše jsou do scény vloženy 3 instance MC MRAK. Poslední číslo určuje hloubku objektu. Objekt s vyšší hloubkou překryje objekty na nižší úrovni (mraky překryjí ostatní objekty). Připojení z knihovny je funkční za předpokladu, že jsme provedli export:

Časová osa MC MRAK obsahuje:

function mracek() {
    couvej = 3*Math.random()+1;
    _width = 100*Math.random()+50;
    _height = _width/2;
    _x = 500*Math.random()+550;
    _y = 300*Math.random()+50;
}
mracek();
this.onEnterFrame = function() {
    if (_x<-110) {
        mracek();
    }
    _x -= couvej;
};

Nadefinovaná funkce mracek() vytvoří novou pozici, velikost a rychlost mráčku. Funkce je využita pokaždé, je-li mrak mimo scénu. Pro úplnost znovu připomínám, že Math.random() vytvoří náhodné číslo z intervalu <0,1> a že např. _x určuje pozici objektu na ose X scény.

Málem bych zapomněl - zdrojový soubor je zde.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Go verze  

 » Rubriky  » Webdesign  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: