Posts Tagged ‘SharedOjects’

SharedObjects – Cookie para sua app flex

novembro 22nd, 2009, posted in Adobe Flex, Dicas

Se você procura uma maneira de usar Cookie no flex o SharedObjects pode ser útil, para quem não sabe o SharedObjects é muito fácil de usar e possui essas Características:

  1. Assim como o Cookie é gerado um arquivo na máquina do usuário final;

  2. Tem extensão .sol;

  3. Não é Cookie... não adianta “limpar o Cookie”(sem piadinhas ao ler essa frase :) ) do navegador... para limpar tem que ser programado e inserido na aplicação flex... no caso usando o método clear() do objeto instanciado como SharedObjects;

  4. Assim como Cookie o usuário final pode bloquear o SharedObjects ou limitar seu tamanho;

  5. pode ser guardar Objetos complexo nesse arquivo...só não pode ter métodos.

Vou mostrar um exemplo simples de como usar essa classe, a idéia é fazer uma espécie de Profiles no Flex, o usuário tem 3 states e o último que ele se encontrava antes de fechar o navegador quero que seja aberto. Vamos ao simples código:

Application.mxml

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300"
  3.     creationComplete="init()" viewSourceURL="srcview/index.html">
  4.     <mx:states>
  5.         <mx:State name="state2">
  6.             <mx:SetProperty target="{button1}" name="label" value="State Principal"/>
  7.             <mx:SetProperty target="{panel}" name="title" value="State 2"/>
  8.             <mx:SetProperty target="{button2}" name="x" value="283"/>
  9.             <mx:SetProperty target="{button2}" name="y" value="54"/>
  10.             <mx:SetEventHandler target="{button1}" name="click" handler="mudaState('')"/>
  11.         </mx:State>
  12.         <mx:State name="state3">
  13.             <mx:SetProperty target="{button2}" name="label" value="State Principal"/>
  14.             <mx:SetProperty target="{button2}" name="x" value="241"/>
  15.             <mx:SetProperty target="{panel}" name="title" value="State 3"/>
  16.             <mx:SetProperty target="{button2}" name="y" value="54"/>
  17.             <mx:SetEventHandler target="{button2}" name="click" handler="mudaState('')"/>
  18.         </mx:State>
  19.     </mx:states>
  20.     <mx :P anel x="10" y="86" width="380" height="120" layout="absolute" title="State Principal" id="panel">
  21.         <mx:Button label="State 2" x="10" y="54" id="button1" click="mudaState('state2')"/>
  22.         <mx:Button label="State 3" x="283" height="22" y="54" id="button2" click="mudaState('state3')"/>
  23.     </mx :P anel>
  24.  
  25.     <mx:Script>
  26.         <![CDATA[
  27.  
  28.             public var profile:SharedObject;
  29.  
  30.             private function init():void{
  31.                 profile = SharedObject.getLocal("profile");
  32.                 if (profile.data.state != undefined){
  33.                     mudaState(profile.data.state);
  34.                 }else {
  35.                     mudaState('');
  36.                 }
  37.             }
  38.  
  39.             private function mudaState(state:String):void{
  40.                 this.currentState = state;
  41.                 profile.data.state = state;
  42.             }
  43.  
  44.             /*Função não usada é só um exemplo para limpar o
  45.              nosso SharedObject*/
  46.             private function limparProfile():void{
  47.                 profile.clear();
  48.             }
  49.  
  50.         ]]>
  51.     </mx:Script>
  52.  
  53. </mx:Application>

viu como é simples!

CODE:
  1. profile = SharedObject.getLocal("profile");

é onde atribuímos o valor do objeto profile, SharedObject.getLocal procura se existe um arquivo com esse nome e pega os valores armazenados no mesmo, se não existe neste momento é criado.

O resto é bem didático vamos nos poupar..rs olha esse exemplo funcionando logo abaixo:

faz um teste aí..muda de state Principal para 2 ou 3...fecha o navegador..acesse novamente esse post e você vai perceber que vai abrir no state que você estava por último ;)

Então fica aí uma dica de uso do SharedObject ;)

Cumps.

Popularity: 14% [?]