chblogBlog personal de Cristian Hernandez

Variables globales en Actionscript 3

En Actionscript 3 by Cristian Hernández on the July 4th, 2007

Actionscript 3, no tiene un acceso tan claro a _root como las versiones anteriores, y _global fue removido (por suerte), por lo tanto se puede llegar a complicar el uso de variables "globales", en realidad no era una buena práctica, pero era una opcion viable hacer esto:

_root.user = "nombre de usuario";
_root.userType = "admin";

o lo siguente:

_global.user = "nombre de usuario";
_global.userType = "admin";

Repito, no es la mejor opción pero era una salida.
La mejor opción para esto, en Actionscript 3, es utilizar el patrón de diseño Singleton, utilizando una class como la siguiente:

package{
        [Bindable]
        public class GlobalVars {
                // public vars:
                public var user:String"nombre de usuario";
                public var userType:String = "admin";

                // private vars
                private static var instance:GlobalVars;

                public function GlobalVars() {
                }
                public static function getInstance():GlobalVars {
                        if (instance == undefined) {
                                instance =new GlobalVars();
                        }
                        return instance;
                }
        }
}

Esta class no se debe instanciar dentro de ella está contenida la única instancia, y es pedida con el método getInstance(), así aseguramos la persistencia de las variables dentro de esta misma instancia.
Con esto desde cualquier class de nuestro proyecto, o bien desde algún fotograma del archivo fla podemos utilizar o modificar estas variables de la siguiente forma:

trace(GlobalVars.getInstance().user)// nombre de usuario;
GlobalVars.getInstance().user = "soy el nuevo usuario"

En otra class:

trace(GlobalVars.getInstance().user)// soy el nuevo usuario;

Con esto tendremos variables globales en forma en forma ordenada, porque todas estarán declaradas en nuestra class, además podemos tener más de una class de estas, para almacenar distinto tipos de datos.
Esto sería como una mezcla de los Value Objects y los Model Locators en el Framework Cairngorm, solo que más simplificado para ser utilizado más facillmente.

Más de Flash CS3

En Actionscript 3, Adobe by Cristian Hernández on the July 3rd, 2007

Mi post anterior sonó medio "apocalíptico" sobre diseñadores y actionscript.. pero por lo que estuve viendo de Flash CS3 tiene una ventaja, haciendo dobleclick sobre cualquier instancia de componente de Flash en en escenario aparece algo parecido a esto:
Editar Componente

Ahi vemos todos las partes del skin del componente para poder ser editado fácilmente... sin tanto código para cambiarlo de colores. Ningún secreto pero es buenisimo..