Resulta que el domingo empecé con AIR y una de las primeras cosas que quise hacer fue crear cuadros de diálogo. ¿Por qué? Bien, el proyecto personal en el que estoy trabajando los requiere por toneladas, pero no lograba encontrar cómo hacerlos. Por suerte, luego de inspeccionar bien a fondo el componente Alert (que tiene justo el comportamiento que deseaba), logré armar mis propias ventanas.
Requerimientos
- Mínimos conocimientos de Adobe Flex Builder, así como manejarse con cierta soltura por la interface del programa.
- Este código también sirve para aplicaciones en Adobe AIR, si quieres implementarlo, necesitas conocimientos básicos en esa tecnología.
Pasos a seguir
- Creamos un proyecto de AIR o Flex vacío (en este caso lo llamaremos "DialogTest") y un componente de Flex:

También vamos a hacer que se base en Panel, para que herede el look de este componente
Los componentes de Flex son básicamente componentes personalizados. Que, luego de haberlos creado, vamos a poder encontrar en la carpeta "Custom" del panel de componentes (si, ya sé que el "luego de haberlos creado" suena a Capitán Obvio, pero por si acaso...). - Diseñamos nuestro componente . En este caso, vamos a incluir la opción de no volver a verlo, por comodidad

- Creamos nuestra aplicación principal como estamos acostumbrados, si no estamos acostumbrados, sería bueno empezar por éste tutorial.
- También creamos una clase con una propiedad estática booleana y pública "mostrarDialogo" que usaremos para decidir si mostramos o no el diálogo. La clase no podría ser más simple:
Código :
package { public class DialogConfig { public static var mostrarDialogo:Boolean = true; } } - Ahora al resto del código, usando el tag <mx:Script> vamos a agregar acciones al botón que mostrará el diálogo:
Código :
import mx.managers.PopUpManager; private function mostrarDialogo ():void { if (DialogConfig.mostrarDialogo) { var escena:Sprite = Sprite (Application.application) var miDialogo:DialogoDePrueba = new DialogoDePrueba (); PopUpManager.addPopUp (miDialogo, escena, true); PopUpManager.centerPopUp (miDialogo); } }
En este caso, le pasamos al PopUpManager tanto la instancia que queremos convertir en popUp como el escenario. Pero la clave del funcionamiento de la ventana se encuentra en el true que le pasamos como parámetro al PopUpManager. Ese true significa que el popUp es modal, o lo que es lo mismo, que retendrá el foco hasta ser cerrado. Una cosa bonita de Flex es que se encarga del blureado sin que tengamos que hacer nada. Quizá en un futuro tutorial, explique cómo personalizar ese efecto. - No nos olvidemos de ubicar un código importantísimo en el diálogo, el que usamos para cerrarlo. En este caso, también se encargará de usar la información del CheckBox:
Código :
import mx.managers.PopUpManager; private function close ():void { if (noMostrar.selected) DialogConfig.mostrarDialogo = false; PopUpManager.removePopUp (this); } - Compilamos y listo. Nuestra aplicación queda más o menos así:
Quizás también te interesen estos otros tutoriales :
- Personalizar el panel Alert de Flex con CSS
- Función Trace en Flex de forma fácil
- Tu primera aplicación en Flex




nice tip HR
Por Raxiro el 05 de Marzo de 2008
Es muy complejo hacer que al draguear el cuadro no se pase de los limites del Stage?
O sea.. en flash lo hacia tranquilamente con un if y creo (ya me olvide!) que con un enterFrame(perdón freddie, pero eran las espocas de as1!! jaja)? o al stopDrag lo comprobaba no recuerdo bien, en fin hay alguna forma más efectiva en AS3 o algún método o propiedad que simplemente le pases un true/false y lo compruebe solo?
Saludos!.
Por Raul Diaz el 05 de Marzo de 2008
http://blog.diaztorrres.com
Por Raul Diaz el 05 de Marzo de 2008
http://blog.diaztorres.com
Por HernanRivas el 05 de Marzo de 2008
Raul Diaz: Interesante componente, pero es demasiado para el caso que necesito. Igual, lo tendré en cuenta para un futuro proyecto. Gracias. Por otro lado sería preferible que pusieras el link directo al post. Total, si alguien está interesado puede ir a la home y recorrer tu página, sin necesidad de que tu comentario parezca mera publicidad (vale aclarar que mi detector de spam es demasiado sensible).
Por vanvanero el 05 de Marzo de 2008
Por Raul Diaz el 06 de Marzo de 2008
Gracias por las felicitaciones Vanvanero
Por el 11 de Abril de 2008
Sisco :
Hola hernan, como podria pasar este codigo a una clase .as para ser llamado desde flex?
Agradezco su colaboración.
Por Juan Felipe el 03 de Enero de 2010
Gracias
Por evelin pinto vasquez el 05 de Septiembre de 2010