^M Archive Uncategorized | Andrés Villagrán Placencia

Uncategorized

Comunicación entre componentes/modulos utilizando Singleton

En un post anterior (y muy antiguo) comentaba que se podía utilizar Application.application para comunicarse con la aplicación principal desde un módulo, si bien es cierto esta misma operación se puede realizar a través de eventos, lo cual sería la forma más limpia de hacerlo, hay otra, la cual sería "sucia" pero rápida que es utilizando Singleton.

Lo primero es crear esta clase, como ejemplo:

Util.as

  1. package {
  2. public class Util {
  3. public var variableTemporal:Object;
  4. private static var instance:Util;
  5.  
  6. public static function getInstance():Util {
  7. if(instance == null) {
  8. instance = new Util();
  9. }
  10. return instance;
  11. }
  12. }
  13. }

Esta clase permitirá almacenar en la variable "variableTemporal" los objetos que queramos almacenar y acceder desde cualquier componente/modulo, obviamente en vez de utilizar una variable publica, podemos crear funciones setter/getter.

Luego, debemos instanciar la clase en la aplicación principal:

Prueba.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  4. xmlns:s="library://ns.adobe.com/flex/spark"
  5. creationComplete="creationCompleteHandler(event)">
  6. <fx:Script>
  7. <![CDATA[
  8. import mx.events.FlexEvent;
  9.  
  10. protected function creationCompleteHandler(event:FlexEvent):void {
  11. Util.getInstance();
  12.  
  13. // Guardo en la variableTemporal
  14. // un valor para hacer la prueba
  15. Util.getInstance().variableTemporal = {prueba: 'Hola'};
  16.  
  17. }
  18. ]]>
  19. </fx:Script>
  20. </s:Application>
  21.  

Luego de esto, ya podemos utilizar nuestra clase desde cualquier componente o modulo, por ejemplo:

Prueba.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
  4. xmlns:s="library://ns.adobe.com/flex/spark"
  5. xmlns:mx="library://ns.adobe.com/flex/halo"
  6. creationComplete="init()">
  7.  
  8. <fx:Script>
  9. <![CDATA[
  10. private function init():void {
  11. trace("Valor variableTemporal:" + Util.getInstance().variableTemporal.prueba);
  12. }
  13. ]]>
  14. </fx:Script>
  15. </s:Group>
  16.  

Ojalá les sirva de ayuda 😉

Tags: , , ,

Thursday, January 28th, 2010 Flex, Uncategorized 7 Comments

Primer Mensaje

Retomando mi blog, comenzamos con el primer mensaje!

Tags:

Friday, March 7th, 2008 Uncategorized No Comments