Comunidad de diseño web y desarrollo en internet

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Como utilizar controles del MXML en el archivo Actionscript

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! :|

Este sábado el más importante inversionista de Silicon Valley y presidente de Y Combinator dará una clase en vivo en Platzi. Unete ya mismo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate