Si trabajas con FLEX en proyectos medianos o grandes, muy probablemente acostumbres separar el actionscript del MXML. Si no lo haces, te comento que se recomienda generar dos archivos por módulo, uno con el MXML y otro con el actionscript. En el MXML declaras los controles(tales como datagrid, combobox, panels, etc) y en el archivo actionscript controlas los eventos, procesas información, etc.
Vamos a suponer que en MiVentana.mxml tienes cuatro combobox:
Código :
<?xml version="1.0" encoding="utf-8"?> <MiVentanaBase xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:ComboBox id="combo1" /> <mx:ComboBox id="combo2" /> <mx:ComboBox id="combo3" /> <mx:ComboBox id="combo4" /> <mx:ComboBox id="combo5" /> </MiVentanaBase>
En MiVentanaBase.as para accesar a los combos, normalmente harias algo como esto:
Código :
package
{
import mx.containers.VBox;
public class MiVentanaBase extends VBox
{
[Bindable] public var combo1:ComboBox;
[Bindable] public var combo2:ComboBox;
[Bindable] public var combo3:ComboBox;
[Bindable] public var combo4:ComboBox;
[Bindable] public var combo5:ComboBox;
public function MiVentanaBase()
{
super();
}
}
}Bien, pues estar declarando/actualizando en el actionscript los controles que utilizas en el MXML puede llegar a resultar tedioso. Como ese archivo Base, esta "casado" con un view MXML, puedes hacer algo para evitar declarar los controles, simplemente crea en el archibo Base una variable llamada v, y castea el this actual al tipo del MXML y vuala, es todo. De tal forma que ahora quedaría así:
MiVentanaView.mxml
Código :
<?xml version="1.0" encoding="utf-8"?> <MiVentanaBase xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:ComboBox id="combo1" /> <mx:ComboBox id="combo2" /> <mx:ComboBox id="combo3" /> <mx:ComboBox id="combo4" /> <mx:ComboBox id="combo5" /> </MiVentanaBase>
MiVentanaBase.as
Código :
package
{
import mx.containers.VBox;
import mx.controls.ComboBox;
public class MiVentanaBase extends VBox
{
[Bindable] public var v:MiVentanaView = MiVentanaView(this); // Here is the magic
public function MiVentanaBase()
{
super();
}
}
}En MiVentanaBase.as, para acceder a uno de los combobox, solo tendría que poner:
Código :
v.combo1.selectedIndex = algo;
Saludos!



Buen tip
Por InKiev el 23 de Agosto de 2010
Código :
No debería ser:
Código :
?Por Pablo el 28 de Agosto de 2010
Lo casteas a view, para obtener los controles. Deberías probar en nivel práctico para que veas la diferencia.
Saludos
Por Anonimo el 02 de Julio de 2011