Variables globales en Actionscript 3
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.userType = "admin";
o lo siguente:
_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:
[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:
GlobalVars.getInstance().user = "soy el nuevo usuario"
En otra class:
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
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:

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..
