Plamínek

Hezký příklad simulace plápolajícího plamínku

Příprava

Otevřete nový dokument a zvolte černé pozadí. Poté nejprve vytvořte movie clip (název "koule"), do něhož nakreslete kouli, kterou následně radiálně obarvěte tak, aby byla po okrajích černá a uvnitř bílá.

Potom vytvořte druhý movie clip ("plamen") a vložte do něj MC koule. Zmenšete jej na minimum (W:1, H:1) a vycentrujte na střed. Vytvořte motion tween a druhý klíčový snímek vložte na pátý snímek. Zde zvětšete MC koule na W:38 a H:34. Poté vložte klíčový snímek na 28. frame a opět zmenšete velikost koule na W:10 a H:10 a posuňte ho tam, kde chcet mít vrchol plamene (ne moc daleko, ani moc blízko, tak o sto pixelů nahoru a o něco ho posuňte buď doleva nebo doprava).

Nyní musíte plamen správě obarvit. Vyberte kouli na prvním snímku a dole v panelu Properties nastavte Color na Tint. Barvy zadejte takto: RGB: 214/255/153. Na pátém snímku zvolte opět Tint a nastavte RGB: 255/215/34. Na posledním snímku zvolte Color: Advanced a v Settings nastavte: R:255 G:37 (v pravém sloupečku) Alpha:23% (v levém sloupečku). Vložte MC plamen do hlavní scény. Tímto je příprava hotová a už zbývá pouze několik řádků ActionScriptu.

Skriptování

Všechen ActionScript bude připojen k instanci klipu plamen na hlavní časové ose:

onClipEvent (load) {
  i=1;
}

Nejdříve vytvoříme proměnnou "i", kterou budeme používat jednak jako čítač, ale také na určování hloubky duplikovaných klipů. Za tento skript přiřaďte následující řádky:

onClipEvent(enterFrame) {
  if (i>68) {
    i=0;
  } else {
    ++i;
    this.duplicateMovieClip("plamen" + i, i);
    posun=random(6);
    name="plamen" + i;
    _root[name]._x+=posun;
  }
}

Ifu si prozatím nevšímejte, vysvětlím jej nakonec. ++i slouží k tomu, aby se každý frame zvýšila tato proměnná o jedničku. Na dalším řádku se každý frame duplikuje tento (this) movie clip a přiřazuje se mu jméno "plamen", ke kterému se přidává čítač "i". Tzn. že duplikované instance budou mít jména plamen1, plamen2, plamen3, atd. Dále přiřazujete hloubku "i", aby se nevymazaly předchozí MC.

Na dalším řádku určujete proměnnou "posun" jako náhodné číslo od nuly do pěti. Dále musíte přiřadit proměnné "name" jméno právě duplikované instance, abyste na dalším řádku mohli posunout tento nově duplikovaný MC o hodnotu "posun" na x-ové ose, čímž se vytvoří dojem onoho vlnění.

A proč tam je ten if? Kdyby tam totiž nebyl, čítač "i" by se každý snímek zvýšil o jedničku, což by znamenalo, že za hodiny by mělo "i" hodnotu 3600*FrameRate, což je docela hodně a program by se vskutku hodně brzdil. Proto, jakmile je hodnota "i" vyšší než 68, okamžitě snížíte její hodnotu zpět na 0 a celý cyklus může pokračovat dále, dokud se zase "i" nenabude hodnoty 69. Mimochodem pokud v podmínce snížíte 68 na nižší číslo, docílíte tím zajímavého efektu - plamínek se totiž občas náhle zkrátí. Je to vidět i v příkladu nahoře, ale pokud snížíte v podmínce 68 třeba na 60, bude to vidět daleko více. Je to způsobeno tím, že když se "i" sníží na 0, duplikujete náhle klipy do hloubky, kde už nějaký duplikovaný klip je a ten se tak musí vymazat.

Stáhnout zdroják
další téma - Motion guide

hlavní stránka # o tento web se stará Lukáš Havrlant # lukas.havrlant@gmail.com