MOŽNOSTI KOMUNIKACE FLASH ANIMACÍ S OKOLÍM Jiří Hrbáček Abstrakt Flash animace mají své nezastupitelné místo v tvorbě interaktivních výukových opor. Přináší do nich mimo jiné interaktivitu, vnitřní inteligenci i skvělé grafické možnosti. Moderní studijní opory ani vlastní výuku si bez nich dnes již prakticky nedovedeme představit. Nalezneme je v LMS, na webech, při práci s interaktivní tabulí i v off-line aplikacích. Základní je, podobně jako v životě i výuce, možnost a nutnost komunikace s okolím. Ať již z důvodu dynamické práce s obrázky, hudbou či texty, nebo dokonce pro komunikaci se servery, databázemi, vlastními LMS a dokonce i mezi sebou vzájemně. Možnosti komunikace Flash animací jsou zde probrány z pohledu běžného uživatele. Klíčová slova Flash, komunikace, data, rozhraní, animace Flash a vzdělávání Flash animace se v současné době zařadily mezi nejmocnější a nejrozšířenější na světě. Jejich možnosti se stále rozšiřují. Od FlashPlayeru verze 10 již disponují podporou 3D animací. Jejich interaktivita, snadnost vytváření, komunikační možnosti, možnost přehrávání i na moderních mobilních telefonech, nezávislost na platformě na které běží, možnost vytváření desktopových aplikací které mohou přímo pracovat s disky a dokonce API rozhraním operačních systémů, dává nevídané možnosti pro jejich nasazení. Prakticky se jen těžko hledá interaktivní multimediální aplikace, kterou by pomocí Flashe nebylo možné realizovat. Flash animace se uplatňují například při používání interaktivních tabulí, kde rozšiřují jejich schopnosti. Mohou spolupracovat s LMS systémy. Ve Flashi lze tvořit například didaktické hry, interaktivní výukové animace, simulace i grafická rozhraní pro jiné programy vytvořené například v C++, C#, Visual Basicu apod. Vše může nést vysoký podíl umělé inteligence. Vhodnost využití Flash animací při tvorbě studijních a výukových opor není třeba zdůrazňovat. Moderní dynamické interaktivní animace si nelze představit bez možnosti jejich komunikace s okolím. Podívejme se na komunikace, které lze využít ve Flashi. Podpora vícejazyčných aplikací Jednou z možností je vytvoření několika shodných animací. Každá z nich používá texty v jiném jazyce. Problémy začnou ve chvíli, kdy by bylo třeba provést doplnění, nebo opravy chyb v animacích. Bylo by třeba udělat úpravy ve všech jazykových mutacích. Jinou možností je vytvoření pouze jedné animace, jejíž texty se dynamicky (za běhu animace) načtou z externích XML souborů. K tomuto účelu má Flash třídu Locate [1], která velmi zjednoduší přístup k a manipulaci s jazykovými lokacemi umístěnými
v XML souborech. Jazykové alternativy (XML soubory) vytvoříme jednoduše pomocí nástrojů vývojového prostředí Flashe (Window - Other panels Strings). V tomto prostředí lze nastavit volby, zda se má nastavit jazyk automaticky (shodný s jazykem operačního systému běžícího na počítači klienta), zda jazyk nastavíme manuálně před publikováním Flash animace, nebo zda se bude jazyk nastavovat dynamicky pomocí ActionScriptu. XML soubory jsou uloženy do podadresářů pojmenovaných podle příslušenství k jazyku. Například cs čeština, nebo en angličtina. Práce s XML soubory Třída XML [2] umožňuje velmi pohodlnou a jednoduchou práci s XML soubory. Pomocí této třídy lze přímo číst obsah souborů XML ze serveru. Třída umožňuje také komunikaci se skripty serverů (například ASPX, PHP apod.). Takto se čtou například zprávy z RSS kanálů, načítají se kaskádní styly apod. Skripty mohou ve formátu XML předávat animacím data z databáze, mohou data z animací ukládat na servery do databází apod. Data jsou strukturována a díky třídě XML se v nich Flash animaci velmi dobře orientuje. Dá se říct, že tento způsob předávání dat je nejrozšířenější. Práce s textovými soubory Pro předávání menšího objemu dat [3] jako jsou například hesla, osobní údaje uživatelů, či ukládání a načítání proměnných se používají textové soubory. Pro práci s nimi používá Flash třídu LoadVars. Data jsou v souboru uložena v následujícím formátu jméno_proměnné=hodnota_proměnné. Předáváme-li více proměnných, jsou od sebe odděleny znakem &. Data lze v tomto formátu posílat na server pomocí skriptů, lze je číst a lze také poslat na server dotaz a očekávat odpověď serveru. Předávání proměnných Flash animaci pomocí HTML kódu Proměnné se předávají [4] prostřednictvím tagů <OBJECT > a <EMBED>, nebo pomocí Java Scriptu. Takto lze předat až 64 kb dat. Tohoto se využívá potřebujeme-li modifikovat činnost Flash animace při jejím spuštění. Používání tlačítek vpřed a zpět browseru Flash sama na tuto činnost nestačí. Má však skvělého spojence v podobě Java Scriptu [5]. Nejjednodušší je použít soubor SWFAddress.as, který obsahuje všechny potřebné skripty. Pak už jen stačí pojmenovat snímky na hlavní časové ose Flash animace a nastavit je jako Anchor. Při publikování v HTML nastavit volbu Flash with Named Anchors. Použití Cookies Ukládání dat na počítač klienta je z bezpečnostních důvodů znemožněno. Jediný způsob, který lze použít jsou Cookies [6]. Třída, která data ukládá a nebo je z Cookies čte je SharedObject. Takto lze pracovat s daty do velikosti 100 kb (Defaultně) na doménu. Limit lze změnit nastavením počítače klienta. Cookies využívají například bannery pro uložení stavu, kde se přehrávání ukončilo, aby při dalším spuštění animace pokračovala a nezačínala vždy znovu. Používají jej také hry k uložení maximálního
dosaženého skóre hráče. Formuláře do nich ukládají předvyplněné položky (jako například mailovou adresu), aby se nemusela vždy znovu vyplňovat. Přehrávání externích zvukových souborů ve formátu MP3 Dnes nejpoužívanější formát pro zvukové soubory je MP3. Tyto soubory mohou být umístěny na serveru a Flash animace je může přehrávat. Streamig (načítání souboru ze serveru a současné jeho přehrávání) umožňuje minimalizovat dobu mezi požadavkem na přehrání a vlastním přehráváním [7]. Pro přehrávání používáme třídu Sound. Pomocí ní lze zjišťovat například průběh nahrávání zvukových souborů na počítač klienta nebo pozice, kde se nachází přehrávací hlava přehrávače (které místo skladby se právě přehrává). Přitom vlastní Flash animace je malá, protože neobsahuje zvukové soubory. Takto je možné snadno přehrávat různé zvukové soubory a lze vytvořit například animaci, která je podbarvena hudbou. Ve zvukových souborech se může nacházet například výklad učiva a podle potřeby je animací ovládané jeho přehrávání nebo naopak. Přehrávání FLV videí Podobně jak lze přehrávat zvuky uložené v souborech na serveru, lze přehrávat videa uložená na severech buď přímo v souborech, nebo on-line vysílaná serverem či webovou kamerou na počítači klienta. Pro tuto činnost využívá Flash dvě třídy NetSteam a NetConnection [8]. Tyto třídy zajišťují mimo jiné připojení přehrávače v animaci ke zdroji (kamera, FLV soubor) a řízení přehrávání a načítání souboru videa. Mají-li videa alfa kanán (mají-li průhledná místa), jsou tato místa jakousi dírou a lze pod nimi mít například tlačítla, aktivní oblasti a podobně, které lze pomocí myši ovládat. Takto můžeme například realizovat funkční Flashovou animaci, ve které se pohybuje člověk natočený na video. Vypadá to jako by byla Flash animace uvnitř videa, nebo video uvnitř animace. Načítání obrázků a Flash animací z externích souborů Pro načítání externích souborů obrázků, nebo Flash animací se provádí pomocí třídy MovieClipLoader, nebo v v nových animacích s použitím ActionScriptu 3 pak Loader [9][10]. Tyto třídy umožňují sledovat průběh nahrávání i zjištění parametrů nahraných objektů dřív, než je zobrazíme na scéně. Je to důležité například pro jejich správné umístění na scénu. Nahrané animace můžeme řídit z animace, která je načetla. Tato činnost patří k nejčastěji používaným činnostem. Obvykle se používá pro vytváření fotogalerií, vytváření náhledových proužků i otevírání jiných animací v základní animaci. Práce se systémovou schránkou - Clipboardem Schránku používáme při práci s počítačem již automaticky. Kouzelné dvojhmaty CTRL/C a CTRL/V nebo volby menu Úpravy-Kopírovat a Úpravy-vložit nás už nikterak nepřekvapují a neumíme si bez nich práci na počítači vůbec představit. Ani Flash není výjimkou a umí se schránkou pracovat [11] i když ne tak dobře jak bychom si třeba někdy představovali. Flash umí do schránky vložit text. Používá k tomu třídu Systém a její metodu setclipboard. Kreativní tvůrce animací jistě najde mnoho příkladů, kde se mu to může hodit.
Komunikace přes SCORM SCORM je jakési rozhraní složené ze sady souborů, které mají specifickou funkci. Vytváří interface pro komunikaci vnějších systémů s LMS systémem. Pomocí třídy SCORM si můžeme předávat data mezi Flash animací a LMS systémem [12]. Takto lze například předávat do LMS výsledky testů, které uživatel vykonal prostřednictvím animace apod. Dynamické načítání HTML a jeho zobrazení Flash animace může zobrazovat HTML text a dovoluje i formátování pomocí kaskádních stylů [13].Vše ovšem pouze v omezené míře. Neumí zpracovávat všechny tagy. Nemá tedy v sobě plnohodnotný web browser. Dovoluje však dynamicky zobrazovat a základním způsobem formátovat text. Můžeme například používat tučné písmo, kurzívu, aktivní odkazy i vkládat obrázky. Vzájemná komunikace Flash animací běžících na klientském počítači Velmi užitečnou, a dávající mnoho možností vývojáři, je komunikace mezi SWF soubory, běžícími na klientském počítači [14]. Flash animace mohou být spuštěny z různých URL v různých typech browserů a mohou dokonce i běžet v lokálních prohlížečích (například AIR a EXE). Tento způsob komunikace je lokální, bez nutnosti přenášet data prostřednictvím serveru. Využívá třídu LocalConnection. Je to dokonce jediný způsob komunikace mezi aplikacemi Flash animacemi vytvořenými v AS2 a AS3. Komunikace s XML Socket Severem Tato komunikace je v podstatě komunikací pomocí XML. Nicméně její využívání je poněkud jiné. Socket Server se používá pro Flash animace, které spolu spolupracují. Jsou však umístěné na různých klientských počítačích [15]. Připojí-li se k Socket Serveru klient, server si to zapamatuje (jde o stavový protokol TCP/IP). Potřebuje-li klient poslat zprávu jinému klientovi, pošle ji na Socket Server a ten ji předá klientovi, kterému je určena. Jinak řečeno, použijeme-li nestavový protokol který využívá již zmíněná komunikace spolupracující s PHP, ASPX apod. je komunikace je následující. Klient pošle dotaz na server, nemá-li pro něj nějakou zprávu. Pokud ji server má pošle mu ji. Každý klient se tedy musí opakovaně dotazovat serveru a tím jej zatěžuje. Při použití Socket Serveru se klient spojí se serverem a pošle mu data pro jiného klienta a server klientovi data pošle, aniž by se musel dotazovat, má-li pro něj nějaká. V tomto nám pomáhá třída XMLSocket. Bezpečnostní politika FlashPlayeru Poslední, ovšem ne po stránce důležitosti, je způsob, kterým Flash Player pomáhá chránit servery a počítače klientů [16]. Otevřeme-li ze serveru Flashovou animaci, vytvoří se mezi Flashovou animací a serverem jakýsi bezpečný kanál (důvěryhodné spojení). FlashPlayer tedy bez problémů dovolí z téhož serveru načítat textové soubory, videa, obrázky, XML soubory apod. Pokud se například animace pokusí načítat jiný
SWF z jiné domény, Flash player prověří obsah CROSSDOMAIN.XML souboru na tomto serveru. Nalezne-li tam povolení pro přístup z domény, ze které byla animace spuštěna, povolí načtení této nové animace. Nenalezne-li tam povolení, animaci nenačte. Pokud animaci načte, můžeme ji ovládat pomocí klávesnice i myši. Potřebujeme-li však volat její funkce pomocí skriptu je třeba navíc aby toto bylo v načtené animaci povoleno pomocí třídy System.security.allowDomain. Závěr Shrnuli jsme si zde nejpoužívanější komunikace, kterými disponuje Flash. Nejde o podrobný popis jak je přesně realizovat, co by mohl potřebovat programátor. Odkazy na literaturu, použil jsem záměrně převážně českou, mohou zájemcům pomoci nalézt potřebné podrobnosti. Popis jednotlivých možností komunikace je záměrně veden z pohledu běžného uživatele, který by si chtěl udělat představu o tom, co lze. Ví-li co lze, dokáže Flash animace využít co nejlépe. I když není odborník, dovolí mu tyto informace navrhnout animace, které již není těžké pro Flashaře vytvořit a jeho nápady realizovat. Věřím, že zde kreativní uživatel nalezne mnoho zajímavých námětů na využití Flash animací. Literatura [1] BRICHTA, Ondřej. Flash vícejazyčná aplikace : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=576>. [2] BRICHTA, Ondřej. Články na téma Práce s XML : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanky.aspx?sekce=41>. [3] BRICHTA, Ondřej. Ukládání dat pomocí PHP : flash.cz [online]. c2005-2007 [cit. 2008-17- 09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=927>. [4] BRICHTA, Ondřej. Předání proměnné v HTML : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=1040>. [5] SWFADDRESS[online]. c2004-2008 [cit. 2008-17-09]. Text v angličtině. Dostupný z WWW: <http://www.asual.com/swfaddress/>. [6] BRICHTA, Ondřej. Flash tiptrik ukládání dat : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=553>. [7] BRICHTA, Ondřej. Flash MP3 přehrávač: flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: < http://www.flash.cz/portal/clanek.aspx?id=735>. [8] BRICHTA, Ondřej. Vlastní přehrávač pro streaming FLV videí : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=399>. [9] BRICHTA, Ondřej. Flash načítání externích obrázků : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=561>. [10] BRICHTA, Ondřej. Flash CS3 načítání externích souborů: flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=821>. [11] BRICHTA, Ondřej. Flash tiptrik kopírování textu do schránky : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=904>.
[12] Flash demos for SCORM ActionScript classes now available [online]. c2002-2008 [cit. 2008-17-09]. Text v angličtině. Dostupný z WWW: < http://pipwerks.com/journal/2008/02/10/flash-demos-for-scorm-actionscript-classes-nowavailable/>. [13] MACHÁČEK, Milan. Dynamické načítání HTML : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=752>. [14] MACKO, Peter. Komunikace mezi dvěma SWF soubory : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=340>. [15] PAZOUREK, Jaroslav. XML Socket Server a víceuživatelské aplikace ve Flashi : flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: <http://www.flash.cz/portal/clanek.aspx?id=320>. http://www.asual.com/swfaddress/ [16] BRICHTA, Ondřej. Flash tip trik externí data a zabezpečení: flash.cz [online]. c2005-2007 [cit. 2008-17-09]. Text v češtině. Dostupný z WWW: < http://www.flash.cz/portal/clanek.aspx?id=512>. Ing. Jiří Hrbáček, Ph.D. Masarykova Univerzita Pedagogická fakulta Katedra technické a informační výchovy Poříčí 31 603 00 Brno e-mail: hrbacek@posta.ped.muni.cz