Flash tiptrik – ukládání dat

15.2.2007· Autor: Ondřej Brichta· Počet komentářů: 5

Jedinou možností, jak lze ukládat data přímo z flashové aplikace bez pomoci jiných skriptů, je využití SharedObject třídy, která umožňuje ukládat malé soubory dat na disku. Tuto obdobu Cookies si dnes vyzkoušíme.

Flashové sušenky

Flash sám o sobě neumí ukládat data. Pokud ovšem nepotřebujeme pracovat s velkými soubory dat, můžeme využít SharedObject třídy, která umožňuje ukládat malé objemy dat. Pokud mluvíme o malých objemech dat, je tím míněno defaultně nastavení flashplayeru, který dovoluje uložit maximálně 100kB dat. Dodatečným nastavením lze tento limit zvýšit, nebo snížit.so1.swf

Tak jako v případě cookies, i se soubory vytvořené pomocí SharedData třídy lze pracovat pouze v rámci dané domény. Soubory SharedObject dat jsou vázány vždy na konkrétní doménu.

Použití

Klasickým použitím SharedObject třídy je při vyplňování nejrůznějších formulářů nebo údajů uživatelem naší aplikace. Máme tak jedinečnou možnost načíst již dříve zadané údaje a doplnit je do textových polí. Náš uživatel tak nemusí znovu vyplňovat celý formulář, můžeme mu tak usnadnit práci.

Podívejme se nyní na jednoduchý příklad, kde simulujeme ukládání a znovu načítání údajů, které jsme pomocí SharedObject třídy vytvořili:

nacist_data = function (obj:String):String {
            var so:SharedObject = SharedObject.getLocal(obj);
            var str = so.data.ulozene_data;
            return str;
 };
 ulozit_data = function (obj:String, val:String):Void {
            var so:SharedObject = SharedObject.getLocal(obj);
            so.data.ulozene_data = val;
            so.flush();
 };

Jedná se o dvě jednoduché funkce, kde první funkce „nacist_data“ slouží pro získání údajů z uložených dat. Druhá funkce zajistí uložení nových dat. Všimneme si, že k vytvoření objektu SharedObject třídy je použita metoda getLocal, která provede načtení příslušného souboru dat. Abychom zajistili okamžité uložení změny hodnoty objektu SharedObject, použijeme metodu „flush()“, která zajistí okamžité zapsání změny do příslušného souboru na disku.

Následně pak přes vlastnost „data“ objektu třídy SharedObject máme dobrou možnost přistupovat k jednotlivým vlastnostem – proměnným tohoto objektu, která jsou uložené v soubory na našem disku.

Výsledná aplikace, využívající uvedené funkce vypadá takto:

Druhý příklad ukazuje možnost automatického vyplnění tří textových polí, pokud jsme je předtím vyplnili a nechali uložit jejich hodnoty:

 nacist_data = function ():Void {
            var so:SharedObject = SharedObject.getLocal("texty");
            var str1 = so.data.text1;
            var str2 = so.data.text2;
            var str3 = so.data.text3;
            if (str1 != undefined) {
                        in1.text = str1;
            }
            if (str2 != undefined) {
                        in2.text = str2;
            }
            if (str3 != undefined) {
                        in3.text = str3;
            }
 };
 ulozit_data = function ():Void {
            var so:SharedObject = SharedObject.getLocal("texty");
            so.data.text1 = in1.text;
            so.data.text2 = in2.text;
            so.data.text3 = in3.text;
            so.flush();
 };
 nacist_data();

Výsledná aplikace bude vypadat takto:

Pokud uložíte hodnoty v textových polí a znovu načtete tuto stránku, dojde k automatickému doplnění údajů do těchto tří textových polí.

Třetí ukázkou je uložení polohy objektu na scéně, kterou lze využít, pokud umožňujeme uživatelům měnit vzhled své aplikace. Pak je lze nový vzhled uložit do objektu třídy SharedObject a při novém načtení a nebo při volbě samotného uživatele přednastavit vzhled aplikace:

 nacist_data = function ():Void {
            var so:SharedObject = SharedObject.getLocal("pozice");
            var x_poz = so.data.x_poz;
            var y_poz = so.data.y_poz;
            if (x_poz != undefined) {
                        prvek._x = x_poz;
            }
            if (y_poz != undefined) {
                        prvek._y = y_poz;
            }
 };
 ulozit_data = function ():Void {
            var so:SharedObject = SharedObject.getLocal("pozice");
            so.data.x_poz = prvek._x;
            so.data.y_poz = prvek._y;
            so.flush();
 };

Kromě uvedených  je ještě použit MovieClip - prvek, který lze přetahovat díky funkcím:

 on (press) {
            startDrag(this,false,100,40,700,150);
 }
 on (release, releaseOutside) {
            stopDrag();
 }

Výsledná aplikace pak bude vypadat takto:

Ondřej Brichta Vývojář multimediálních aplikací, šéfredaktor Flash.cz, školitel produktů Flash, Flex, Flash Media Server

Web: http://www.obria.cz |

Motto: <°))))><

Seriál: Tipy a triky

Tipy a triky je seriál zaměřený na zajímavá řešení a vylepšení flashových aplikací

Komentáře k článku  
Dííky Kubiro | 15.2.2007 9:32
Pristupovanie z inheho swf TINYSOFT | 15.2.2007 18:32
Re: Pristupovanie z inheho swf OBr | 15.2.2007 21:35
Re: Re: Pristupovanie z inheho swf TINYSOFT | 15.2.2007 23:46
Proste nevim. dodos2 | 8.9.2008 5:39

Přihlášení uživatele