Magické JSFL - rychlé seznámení s rozšířením Flash IDE
Dnešní článek bude pro ty, kdo programují v ActionScriptu a speciálně pak použíjí rozšíření flashe JSFL.
Co je JSFL
JSFL je rozšížení Macromedia Flashe, pomocí kterého píše můžete psát skripty, jejichž spuštěním se vykonávají operace přimo ve Flash IDE – tedy ne při runtimu SWF souborů, ale při jejich vývoji. API JSFL umožňuje vytvářet soubory podobně jako kdybyste je tvořili přímo ve Flash IDE.
Malý výčet možností JSFL:
- možnost importovat objekty do knihovny
- možnost vytvářet movieclipy (lze používat i naimportované objekty z knihovny)
- lze stavět celou timelinu (přidávat framy i vrstvy)
- do stage lze vkládat objekty z knihovny a nastavovat jim vlastnosti (lze vkládat i komponenty)
- sestavené soubory lze exportovat
- přidávat vlastní tlačítka do toolboxu
Z uvedených usecasů vyplývá, že lze například jednoduše spuštěním JSFL skriptu vytvořit SWF soubor, ve kterém budou naimportovány vaše fotografie a například i použity vaše komponenty.
Pokud máte například data v XML a chcete je převést do FLA souboru
nebo dokonce přímo do SWF stačí vám napsat XML to JSFL convertor a
o převod JSFL do SWF se již postará Flash IDE. Proces, který jsem teď
popsal je velmi podobný tomu jak pracují JasperReports
– zde je na začátku jrxml
soubor, který se převede na
předkompilovaný jasper
soubor. Processingem jasper
souboru (a nastavením modelu) dostaneme výsledný soubor – například
PDF.
Nový soubor není nutné vytvářet od nuly. Můžete si otevřit už připravený template (s naimportovanými objekty knihovně) a pouze je částí nových dat doplnit.
Možnosti spouštění JSFL kódu
Existuje několik možností jak spouštět JSFL API.
Spuštění JSFL souboru
Můžete si napsat soubor, který obsahuje JSFL kód a uložit jej s koncovkou jsfl. Soubory s touto koncovkou jsou asociování s Flash IDE, takže když na něj poklepete ve vašem oblíbeném file manageru dojde k jejich spuštění.
Přímé zavolání JSFL kódu z ActionScriptu
Kdo čte pozorně narazil teď na věc které ho zarazila – mluvil jsem
o tom, že JSFL má své místo během authoringu a ne při runtimu SWF
souboru. Flash IDE umožňuje spouštět vlastní commandy – SWF
soubory, které jsou umístěny ve speciálním adresáři. V případě
Windows XP je to C:\Documents and Settings\USER_NAME\Local
Settings\Data aplikací\Macromedia\Flash
8\en\Configuration\WindowSWF
.
var numLibItems = MMExecute("fl.getDocumentDOM().library.items.length");
var message = numLibItems + " items in library";
MMExecute('fl.trace("' + message + '");');
Volání JSFL funkcí z ActionScriptu
Můžete si napsat knihovní JSFL funkce do jsfl
souboru a pak
je volat přímo z ActionScriptu.
Malá ukázka: Volání JSFL souboru přímo z ActionScript kódu
var result = MMExecute("fl.runScript("file:///C|/testScript.jsfl", "foo", "world");
");
var message = numLibItems + " items in library";
MMExecute('fl.trace("' + message + '");');
Volaná metoda v JSFL souboru:
function foo(str) {
return "Hello " + str;
}
Pokud vynecháte název funkce a její parametry spustí se celý JSFL soubor.
V případě druhé i třetí možnost je použita funkce
MMExecute
. V případě embednutého volání JSFL kódu
z ActionScriptu jste však velmi svázaní. Je to pomalé a nepřehledné.
Switchuje se mezi dvěma kontexty. Volání metod uložených v exerních
JSFL má tu výhodu, že je lze upravovat bez nutnosti znovu kompilovat SWF
soubor, ze kterého jsou volány.
Ještě bych zmínil jednu nevýhodu – jako parametry JSFL funkcí můžete používat jenom primitives – čísla, řetězce a proměnné typu bool. Pokud chcete poslat něco složitějšího musíte si sami naimplementovat serializaci.
Funkce MMExecute
vrací návratovou hodnotu volané funkce
– ale opět pouze její „string representation“.
Nakonec ještě jedna důležitá maličkost – pro spouštění
jsfl
souborů musíte mít nainstalované Flash IDE.
Závěr
JSFL je mocný nástroj – umožňuje pomocí API přistupovat k Flash IDE. V současnosti spouštíme JSFL skripty, které mají přes 150 000 řádků a jejich provádění trvá více jak 20 minut (na nejvýkonnějších strojích). Výsledkem je SWF soubor, na který už nemusí lidská ruka sáhnout a který by klasickou (ruční) cestou trval desítky hodin.
Odkazy
- Výborným zdrojem dokumentace je přímo Help v Macromedia Flash IDE – část Extending Flash
- Flash MX 2004 JSFL Reference
- Extending Flash MX 2004, Part 1: Understanding the JSFL DOM
- Extending Flash MX 2004, Part 2: Using Classes and Scripts in JSFL
Celý článek Přidat komentář 9. May 2007