Home » AIR »AS3 »Básico »Seguridad » Currently Reading:

Mostrar una alerta antes del cierre de una aplicación AIR

enero 26, 2009 AIR, AS3, Básico, Seguridad 1 Comment
Mostrar una alerta antes del cierre de una aplicación AIR

En este ejemplo mostraré como crear una ventana de alerta cuando le demos al botón de cerrar en una aplicación AIR, teniendo que validar el cierre evitando que se cierre directamente. De esta manera podemos controlar que el usuario cierre la aplicación si haber realizado una operación necesaria, por ejemplo guardar los cambios realizados en el caso de tratarse de una a aplicación que edite documentos.

Lo primero que deberemos hacer es colocar la función a realizar cuando se detecte el evento de cierre de la aplicación (osea, cuando el usuario cierra la aplicación).

  1. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" closing="cerrarApp(event)">

Ahora escribiremos la función. El punto importante aquí es como evitar el cierre de la aplicación, ya que el usuario realmente a clicado en el botón de cerrar. Esto lo conseguimos con el método preventDefault() de la clase Event. Con este método conseguimos que el evento no ejecute las funciones por defecto y por lo tanto no se cierra la aplicación. Lo que haremos en su lugar es abrir una ventana de Alert.

  1. public function cerrarApp(e:Event):void
  2. {
  3.     e.preventDefault();
  4.    
  5.     Alert.yesLabel = "Si";
  6.    
  7.     Alert.show("¿Realmente quiere salir?","Salir aplicación", Alert.YES | Alert.NO, null, cerrar, null, 2);
  8. }

Con yesLabel decimos que aparezca el texto “Si” en el botón de validar en lugar de “Yes”. Y con el 2 al final de los parámetros decimos que el botón seleccionado por defecto sea el segundo, osea el “No”.

También le estamos indicando que al clicar sobre cualquiera de los botones se ejecute la función “cerrar” que es la siguiente:

  1. private function cerrar(e:CloseEvent):void
  2. {
  3.     if(e.detail == Alert.YES)
  4.     {
  5.         this.nativeApplication.exit();
  6.     }
  7. }

Donde le estamos indicando que si el botón seleccionado es el “Si” entonces cierre la aplicación. En el caso de seleccionar el “No” no se ejecuta nada y por lo tanto la aplicación sigue abierta.

[h3]Segundo ejemplo[/h3]

El código anterior se ejecutaría siempre que le demos al icono de cerrar aplicación. Pero lo interesante es poder controlar cuando queremos mostrar esa advertencia.

Por ejemplo en el caso de tener una aplicación que sea un editor de texto. Si le damos al botón de cerrar la aplicación teniendo cambios sin guardar mostraremos el Alert, pero en el caso de haber guardado los cambios previamente cerraremos directamente la aplicación.

Primero crearemos una variable booleana que controlará si la aplicación se cierra automáticamente o requiere mostrar la advertencia.

  1. private var cierre:Boolean = true;

En la función que se ejecuta al cerrar la aplicación colocaremos un condicional que detecte el estado de esa variable.

  1. private function cerrarApp(e:Event):void
  2. {
  3.     e.preventDefault();
  4.    
  5.     if(cierre == false)
  6.     {
  7.         Alert.yesLabel = "Si";             
  8.         Alert.show("¿Desea guardar los cambios antes de salir?","Salir aplicación", Alert.YES | Alert.NO | Alert.CANCEL, null, cerrar, null, 3);
  9.     }
  10.     else
  11.     {
  12.         this.nativeApplication.exit();
  13.     }
  14. }

Lógicamente esa función “cierre” la deberemos controlar con el resto de funciones de la aplicación. Es decir, todas las funciones que realicen cualquier cambio que deba ser guardado deberán colocar esa variable a “false“, y la función que realice el guardado de datos deberá colocar la variable a “true“.

La función de cierre quedaría asi:

  1. private function cerrar(e:CloseEvent):void
  2. {
  3.     if(e.detail == Alert.YES)
  4.     {
  5.         guardarDatos();                
  6.         this.nativeApplication.exit();
  7.     }
  8.     else if(e.detail == Alert.NO)
  9.     {
  10.         this.nativeApplication.exit();
  11.     }
  12. }

De manera que si clicamos “Si” ejecutaríamos la función que nos guarda los datos y cerraríamos después la aplicación, si clisásemos “No” cerraríamos directamente y si clisásemos “Cancel” entonces no se ejecutaría nada y no cerraríamos la aplicación.

Compártelo:

Mostrar una alerta antes del cierre de una aplicación AIR
Visto 10.412 veces

Currently there is "1 comment" on this Article:

  1. isantos dice:

    esto es muy bueno para evitar la perdida de datos…. aunque es cierto que los usuarios algunas veces les aparecen los dialogos y le dan en donde no deben :D:D:D
    Te invito a que visites y comentes mi blog
    http://www.ddsmedia.net/blog

Comment on this Article:








Twitter: zguillez

AdvertisementAdvertisementAdvertisementAdvertisement

Recibe las novedades por email

Post destacado

Betas de Flash Player 15 y AIR 15 actualizadas en Adobe Labs

18 oct 2014

Se han actualización las Betas de Flash Player 15 y AIR 15 disponibles en Adobe Labs. Esta versión beta incluye nuevas características, así como las mejoras y correcciones de errores relacionados con la seguridad, la estabilidad, el rendimiento y la compatibilidad de dispositivos de Flash Player 15 y AIR 15. Más información sobre Adobe AIR 15 Beta Descargar Adobe AIR 15 Beta Más información sobre Flash Player 15 Descargar Flash Player 15 Beta Adobe permite publicar en los foros de la beta, crear informes de errores y solicitudes de funciones: Foro Flash Player Beta Foro AIR Beta  Base de datos …



Map

Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com