Pokud se o Flash zajímáte, věřím tomu, že jste již někdy potřebovali v aplikaci používat větší množství fontů a to zrovna podle toho, který font si uživatel zvolil (nejčastější případ je textový editor ve flashi). Já tento problém řešil už několikrát a bohužel se mi pořád nedařilo nalézt řešení. Prošel jsem hodně zahraničním webů (české= téměř neexistují) s návody jak na to, ale nikdy mi to nefungovalo a bohužel na daných webech chyběla ukázka v podobě zdrojových *.fla souborů.
Až dnes se mi podařilo konečně objevit řešení a proto bych se o něj rád podělil. Krokem číslo jedna je tedy stáhnout si ukázkové soubory. Připravil jsem v nich funkční ukázku, podle níž byste měli být schopni použít tuto techniku i bez dalšího návodu. Ale přesto, se ještě rozepíšu.
Nejprve, ale proč vůbec používat načítání fontů za běhu? Odpověď je vcelku jednoduchá a to, protože pokud do SWF souboru přibalíte font, tak jeho velikost s každým takovým fontem naroste cca o 150kb, což je při použití 10 fontů 1,5MB, což je vážně hodně! A navíc je zbytečné načítat tolik dat, když je uživatel potom nepoužije.
Druhou věcí je omezení, které tato technika sebou nese. Největším je asi, že nelze použít font dříve, než je načten. Na první pohled to vypadá logicky, ale při vývoji se na to často zapomíná (pokud tedy vytvoříte textové pole, přiřadíte mu font a až poté tento font načtete, text se nezobrazí).
Druhým omezením, které stojí za zmínku, je že pokud chcete používat více řezů daného fontu (tučné, nebo kurzíva), pak musíte přibalit každý z těchto řezů a to včetně kombinací. Tedy Například Verdanu, tučnou Verdanu, Verdanu v kurzívě a také tučnou Verdanu v kurzívě. Jinak by se opět text nezobrazil.
A nyní již k samotnému postupu:
- Vytvořte prázdný soubor s názvem „verdana.fla“
- Pomocí nástroje „Text“ napište do tohoto souboru jakýkoliv text, nastavte jej jako dynamický, přiřaďte font Verdana a přibalte znaky, které budete potřebovat (přes tlačítko „embed“ v panelu „Properties“).
- Vytvořte z tohoto textového pole MovieClip s libovolným názvem
- Do tohoto MovieClipu vložte tento ActionScript 2.0 kód: _parent._parent.onFontLoad(„Verdana“);
- V knihovně označte daný MovieClip a přes pravé tlačítko myši si v kontextovém okně zvolte „Linkage…“
- Do pole „Identifier“ napište „font_mc“ (takto jej budeme identifikovat)
- Zaškrtněte políčka „Export for runtime sharing“ a „Export in first frame“
- Do pole URL zadejte URL tohoto vyexportovaného souboru. V našem případě „verdana.swf“
- Potvrďte a vyexportujte SWF soubor
- Vytvořte nový soubor verdanaLoader.fla ve stejném adresáři
- Zkopírujte z knihovny patřící souboru „verdana.fla“ námi vytvořený MovieClip do knihovny pro soubor „verdanaLoader.fla“
- Přetáhněte tento zkopírovaný MovieClip do plochy (toto je důležité, nestačí jej mít jen v knihovně)
- Opět si otevřete dialogové okno „Linkage..“ (viz. bod 5.), ale tentokrát pro ten zkopírovaný MovieClip
- Do pole „Identifier“ zadejte opět „font_mc“ (stejný jako v bodě 6.)
- Zaškrtněte pole „Import for runtime sharnig“
- Do pole „URL“ zadejte „verdana.swf“. Tedy název SWF souboru s fontem.
- Vyexportujte soubor „verdanaLoader.swf“. Tímto máme to nejdůležitější za sebou.
- Nyní si stačí vytvořit třetí soubor, do kterého budete načítat soubor „verdanaLoader.swf“. V tomto novém souboru budete mít dostupnou událost „onFontLoad“, kterou jsme si vytvořili v bodě 4. Jakmile, tedy bude zavolána, víme, že je font připraven k použití a můžeme jej aplikovat na nějaké textové pole (příklad je v souboru main.swf, respektive main.fla).