Textové efekty

Vlnitý text:

Příprava

Vytvořte movie clip, do kterého vložte dynamické textové pole (pojmenujte ho "pismo"). Na časové ose vytvořte motion tween s celkem třemi keyframy: na prvním dvacátém a čtyřicátém snímku. Na prvním a posledním snímku dynamická pole tak dvakrát až třikrát zvětšete, na dvacátém jej minimalizujte (W:1, H:1). Dále zde (20.snímek) nastavte poli brightness tak na -90. Vložte MC do hlavní scény a pojmenujte jej "pismeno". Tím by byla příprava hotová.

Skriptování

Celý skript bude umístěn na prvním snímku hlavní časové osy:
slovo="AŤ ŽIJE SAGVAN TOFI";
delka=slovo.length;
for (i=0; i<delka; ++i) {
  pismeno.duplicateMovieClip("pismeno" add i, i);
  name="pismeno" add i;
  _root[name]._x=20+(25*i);
  _root[name].pismo.text=_root.slovo.charAt(i);
  _root[name].gotoAndPlay(i);
}
Nejdříve tedy musíte zadeklarovat proměnnou "slovo", které bude obsahovat text, který se bude vlnit. Na dalším řádku jednoduše zjistíte, jak je toto slovo dlouhé. Dále se provádí cyklus for, který se opakuje tolikrát, jaká je délka slova. Jako první cyklus duplikuje instanci pismeno, což je MC vložený do hlavní scény (tyto duplikované klipy - dynamické pole - seřadíte vedle sebe a vložíte do nich vždy jedno písmeno z proměnné "slovo", čímž se vytvoří dojem, že vlnité slovo je vcelku). Jako název duplikovaného klipu se přiřadí "pismeno" a přidá hodnotu "i" - čítač cyklu. Na dalším řádku se proměnné name přidá název právě duplikované isntance. Dále cyklus nastaví x-ovou souřadnici právě duplikovaného klipu na 20+(25*i). Dvacítka před závorkami je vzdálenost od levého okraje, neboli x-ová souřadnice instance "pismeno" na hlavní scéně. 25 Je potom vzdálenost (mezera) mezi jednotlivými písmeny. Na dalším řádku se do dynamického pole vypisuje znak z proměnné slovo na indexu "i". A abyste vytvořili dojem vlnění, musí každý duplikovaný klip začínat na jiném snímku (jinak by se zvětšovaly všechny najednou).
stáhnout zdroják

Stínování

Ve Flashi se nedá nastavit, aby písmo mělo písmo stín, avšak pomocí jednoduchého triku si jej můžete vytvořit. Na hlavní scéně vytvořte dvě vrstvy. Do každé z nich vložte identické textové pole (stejná velikost, stejné souřadnice, stejné písmo atd. - prostě ho CTRL+C zkopírujte) a do Var zadejte "text", což je název proměnné, které budou pole vypisovat. Klikněte na první snímek a zadeklarujte novou proměnnou:
text="The Simpsons";
Nyní zamkněte horní vrstvu a vyberte dynamické pole ve spodní vrstvě. Změňte barvu textu na šedou (pokud chcete mít stín jiné barvy, zvolte si jakou chcete) a přesuňte textové pole o dva pixely doprava a dolů. Spusťte animaci. Uvidíte stínovaný text.
stáhnout zdroják

Uhýbací text


Vytvořte nový movie clip (pojmenujte jej "pismeno"), ve kterém udělejte dynamické textové pole o velikosti W:20 H:28. Vytvořte nový MC ("invisible"), do kterého nakreslete obdélník o stejné velikosti. Oba MC vložte mimo scény, aby na začátku nebyly vidět. MC s dynamcikým textem pojmenujte "textfield" a MC s obdélníkem "spinac". K instanci "spinac" připojte tento skript:
onClipEvent(load) {
	this._alpha=0;
}
Tento jednoduchý skript zcela zprůhlední obdélník, takže vlastně nepůjde vidět. Nyní klikněte na první snímek časové osy a připojte k němu tento skript:
slovo="www.flashvyuka.wz.cz";
delka=slovo.length;
for (i=0; i<delka; i++) {
	_root.textfield.duplicateMovieClip("pismeno" add i, i);
	name="pismeno" add i;
	_root[name].pismo.text=_root.slovo.charAt(i);
	_root[name]._x=(i*20)+30;
	_root[name]._y=50;
}
Nejprve zadeklarujte slovo, které se má objevit. Poté zjistíte jeho délku a přiřadíte ji proměnné "delka". Následuje cyklus, který se bude provádět tolikrát, jaká je délka písmene. První příkaz v cyklu duplikuje instanci "textfield" a dává instanci nové jméno "pismeno" a přidává hodnotu čítače "i". Dále se do proměnné "name" přiřadí název právě duplikované instance. Poté se do tohoto duplikáte vepíše znak na i.tém indexu proměnné "slovo" a nastaví se x-ové a y-ové souřadnice tak, aby následovaly pěkně za sebou. Nyní za tento skript připojte další (ale stále do cyklu for):
for (i=0; i<delka; i++) {
  //předchozí příkazy
  _root.spinac.duplicateMovieClip("spinac" add i, -1-i);
  jmeno="spinac" add i;
  _root[jmeno]._x=(i*20)+30;
  _root[jmeno]._y=50;
  _root[jmeno].j=i;
}
První příkaz duplikuje instanci "spinac", což je neviditelný obdélník a přiřadí mu jméno "spinac" a přidá hodnotu "i". Dále je umístěn do hloubky -1-i. To proto, aby nepřekrýval v minulém kroku duplikované instance "textfield". Neboli předchozí duplikace měla nastavenou hloubku "i". To znamená, že první duplikovaný klip měl hloubku 0, druhý 1, třetí 2 atd. V této duplikaci instance "textfield" má první duplikát hloubku -1 (-1-0), druhý -2, třetí -3 atd. Proměnné "jmeno" je přiřazeno jméno právě duplikované instance. Další dva řádky jsou identické jako v minulém kroku - přiřazují duplikovaným instancím x-ové a y-ové souřadnice. Poslední řádek _root[jmeno].j=i; vysvětlím později.
Nyní opět vyberte instanci "spinac" a přiřaďte k němu tento skript (za událost onClipEvent(load)):
on (rollOver) {
  name1="pismeno" add (j-1);
  name="pismeno" add j;
  name2="pismeno" add (j+1);
  _root[name1]._y=40;
  _root[name2]._y=40;
  _root[name]._y=30;
}
Celý tento skript má skript má za úkol jediné - nastavit vyšší souřadnice (respektive nižší - flash má y-osu naopak) písmenu, přes které přejedete myší a následně také sousedním písmenům. Problém je v tom, že na scéně nyní existuje několik duplikovaných instancí "textfield" s názvy "pismeno1", "pismeno3" nebo klidně "pismeno156", když na to přijde. Stejně tak existuje přesně tolik spínačů - "spinac1", "spinac3" a "spinac156". Jenže problém je v tom, že "spinac3" neví, že má ukazovat na "pismeno3". Řešení je jednoduché. Do každého duplikovaného spínače vložíte nějakou proměnnou, do které uložíte právě to číslo 3, respektive "i". Přesně to dělá řádek z předchozí části _root[jmeno].j=i;. Do každé duplikované instance vloží proměnnou "j", která obsahuje čítač cyklu "i", který je pokaždé jiný, takže slouží jako takové DNA instance (a každá z nich má také jinou adresu: _root.pismeno2.j nebo _root.pismeno45.j atd.). První tři příkazy na tlačítku pak slouží k uložení jména instance, nad kterou jste přejeli myší (name) a dva sousední (name1 a name2). Funguje to asi takhle: pokud najedete myší na sedmý duplikovaný klip, bude mít tato instance v sobě uložené DNA j=7;. Proměnné name se tedy přiřadí řetězec "pismeno7". Proměnné name1 se přiřadí "pismeno" plus j-1, což je 7-1=6. Přiřadí se tedy "pismeno6". Proměnné name2 se pak přiřadí "pismeno" plus j+1 - 7+1=8 - "pismeno8". Pokud byste najeli na pátou instanci, "j" by mělo hodnotu 5 - "pismeno5" a sousední instance by pak byly "pismeno4" a "pismeno6". Další tři řádky skriptu už pak jen upravují y-ové souřadnice vybraných instancí.
Poslední část skriptu připojte za předchozí:
on (rollOut) {
  _root[name1]._y=50;
  _root[name2]._y=50;
  _root[name]._y=50;
}
Tyto tři příkazy pouze vracejí původní y-ové souřadnice, pokud opustíte s myší tlačítko. Proměnné name, name1 a name2 již nemusíte znovu určovat, protože zůstávají z minulé události on(rollOver). Ještě jedna poznámka. Možná si říkáte, proč bylo nutné duplikovat dvě instance najednou. Pokud byste nepoužili obdélník (spinac) a celý skript namísto toho přiřdili k instanci textového pole "textfield", tak ve chvíli, kdy byste myší přejeli přes písmeno by se změnila y-ová souřadnice a klip by vám "ujel" nahoru a tímpádem by automaticky nastala událost on(rollOut) a písmeno by se okamžitě vrátilo zpět.
stáhnout zdroják

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