tengo una clase que por el momento es bastante desordenado/repetitivo:La creación de múltiples propiedades de sólo lectura de forma dinámica en AS3
public class AvFramework extends Object
{
// vars
private var _handler:AvHandler;
private var _keyboard:AvKeyboard;
private var _manager:AvManager;
/**
* Constructor
*/
public function AvFramework()
{
_handler = new AvHandler();
_keyboard = new AvKeyboard();
_manager = new AvManager();
// attach
_handler.framework = this;
_keyboard.framework = this;
_manager.framework = this;
}
/**
* Getters
*/
public function get keyboard():AvKeyboard{ return _keyboard; }
public function get manager():AvManager{ return _manager; }
}
Esta clase sólo va a tener que hacer uso de más y más clases, y Realmente no quiero tener 3 listas enormes para esto como el anterior.
¿Hay alguna manera de hacer lo anterior de forma dinámica? Tal vez usando getDefinitonByName()
en un bucle de cadenas para representar las clases que quiero crear.
También quiero que las propiedades sean de solo lectura y que se pueda acceder a través del framework.myDynamicVarHere
.
Estoy pensando en algo como lo siguiente:
- creo una lista de las clases que quiero crear instancias de pares, con el nombre de la variable que debe tener acceso a.
- necesitaré para hacer la clase
dynamic
para que pueda establecer los VARs travésthis["var"] = new Blah();
fragmento rápida de donde van mis pensamientos:
var required:Object =
{
keyboard: "avian.framework.background.AvKeyboard",
manager: "avian.framework.background.AvManager",
handler: "avian.framework.background.AvHandler"
};
var i:String;
for(i in required)
{
var Req:Class = Class(getDefinitionByName(required[i]));
this[i] = new Req();
AvFrameworkObject(this[i]).framework = this;
}
simplemente no está seguro de cómo iba a ser capaz de para hacer estos de solo lectura.
nice question !!! – Eugeny89
esto: 'var i: String; for (i en required)' no es necesario. Con 'for (var i: String in required)' solo inicializa la cadena una vez y la cadena persiste después del ciclo for. Lo único que obtiene la línea adicional es ... una línea adicional. – cwallenpoole
@cwallenpoole Cierto, esto simplemente me parece más agradable. @ Eugeny89 Gracias :) – Marty