Adobe User Groups

Aplicaciones

Artículos

Concursos

Device Central

Home » Ejemplos, Flash en Móviles

Clase para controlar los SharedObjects en Flash Lite 2.0

Enviado por: Raul Jimenez en Viernes, 15 diciembre 20066 comentarios

Todos aquellos que hayáis utilizado un poco los SharedObjects de Flash Lite 2.0 habréis notado que son realmente incómodos a la hora de trabajar con ellos, así que he creado una clase que funciona con addEventListener. Se podría pulir mucho más, así que se aceptan sugerencias en el código.

La clase cuenta con tres métodos públicos.

init(nombre_del_archivo:String)
Inicializa el objeto SharedObject y devuelve un evento onInitSO que nos dice si el objeto existe o no.

loadSO()
Carga el objeto SharedObject.

saveSO(objeto)
Graba el objeto SharedObject. Hay que pasarle un objeto Flash con todos los valores dentro y la clase se encarga de parsear el objeto.

Código de la clase

Actionscript:
  1. import utils.*;
  2.  
  3. /**
  4. * @author Raul Jimenez
  5. */
  6. class utils.SharedObjectLite extends MovieClip
  7. {
  8.     private var dispatchEvent:Function;
  9.     public var addEventListener:Function;
  10.     public var removeEventListener:Function;
  11.     public var removeAllEventListeners:Function;
  12.    
  13.     private var object_so:SharedObject;
  14.     private var wait_int:Number;
  15.    
  16.     static var ON_INIT_SO = "onInitSO";
  17.     static var ON_SAVE_SO = "onSaveSO";
  18.     static var ON_LOAD_SO = "onLoadSO";
  19.    
  20.     /**
  21.     * @since 01-nov-2006
  22.     * @author Raul Jimenez
  23.     *
  24.     * @usage
  25.     * Constructor
  26.     */
  27.     public function SharedObjectLite()
  28.     {
  29.         GDispatcher.initialize(this);
  30.        
  31.         object_so = new SharedObject();
  32.        
  33.     }
  34.    
  35.     /**
  36.     * @author Raul Jimenez
  37.     * @since 15-dic-2006
  38.     *
  39.     * @usage
  40.     *
  41.     */
  42.     public function init(name_str:String):Void
  43.     {
  44.         trace("init()");
  45.        
  46.         SharedObject.addListener(name_str, onLoad);
  47.         object_so = SharedObject.getLocal(name_str);
  48.         object_so._scope = this;
  49.     }
  50.    
  51.     /**
  52.     * @author Raul Jimenez
  53.     * @since 15-dic-2006
  54.     *
  55.     * @usage
  56.     *
  57.     */
  58.     private function onLoad(data_so:SharedObject):Void
  59.     {
  60.         trace("onLoad(): " + data_so.getSize());
  61.        
  62.         var exists_bol:Boolean = new Boolean();
  63.        
  64.         if (data_so.getSize() != 0)
  65.         {
  66.             exists_bol =  true;
  67.         }
  68.         else
  69.         {
  70.             exists_bol =  false;
  71.         }
  72.        
  73.         data_so._scope.dispatchEvent({type:ON_INIT_SO, target:exists_bol});
  74.     }
  75.    
  76.     /**
  77.     * @author Raul Jimenez
  78.     * @since 15-dic-2006
  79.     *
  80.     * @usage
  81.     *
  82.     */
  83.     public function loadSO():Void
  84.     {
  85.         trace("loadSO()");
  86.        
  87.         dispatchEvent({type:ON_LOAD_SO, target :o bject_so});
  88.     }
  89.    
  90.     /**
  91.     * @author Raul Jimenez
  92.     * @since 15-dic-2006
  93.     *
  94.     * @usage
  95.     *
  96.     */
  97.     public function saveSO(data_obj:Object):Void
  98.     {
  99.         trace("saveSO()");
  100.        
  101.         for (var i in data_obj)
  102.         {
  103.             object_so.data[i] = data_obj[i];
  104.         }
  105.        
  106.         object_so.data.initialized = true;
  107.         object_so.flush();
  108.                
  109.        
  110.         dispatchEvent({type:ON_SAVE_SO, target:"ok"});
  111.     }
  112. }

También he creado un ejemplo por si alguien tenía dudas.

Descargar ejemplo de la clase SharedObjectLite

Compártenos:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Meneame
  • Netvibes
  • RSS
  • Technorati
  • Twitter
  • Yahoo! Bookmarks

6 Comments »

Leave a comment!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.