2011-02-17 13 views
5

Me gustaría saber la forma correcta de cerrar una aplicación de AIR mediante programación.Cerrar mediante programación una aplicación de AIR

En mi WindowedApplication Spark que tengo:

this.addEventListener(Event.CLOSING, shutdownApp); 

y por supuesto una implementación del método shutdownApp (que básicamente pone en orden los archivos temporales).

Esto funciona bien para el botón de cierre superior derecho de la ventana. Sin embargo, también tengo la funcionalidad que necesita para cerrar la aplicación. Dentro del código que he llamado:

NativeApplication.nativeApplication.exit(); 

Sin embargo, esto no activa el método Event.CLOSING, y así mis archivos temporales no se solucionan. ¿No debería llamar a nativeApplication.exit? Si es así, ¿a qué debo llamar? Prefiero no tener que llamar a mi método shutdownApp antes de NativeApplication.exit() ya que no me parece tan elegante.

¿Alguien puede arrojar alguna luz sobre la forma correcta de hacer esto?

Gracias,

Phil

Respuesta

4

La documentación se ve un poco ambiguo sobre esto y yo tendría la misma interpretación que usted lo hizo. ¿Intentó el close o los métodos de salida en WindowedApplication?

Algo como esto, con FlexGlobals y topLevelApplication:

(FlexGlobals.topLevelApplication as WindowedApplication).close(); 

o

(FlexGlobals.topLevelApplication as WindowedApplication).exit(); 
+1

Cuando intenté esto por primera vez, obtuve un TypeError: Error # 1009: No puedo acceder a una propiedad o método de una referencia de objeto nulo. Esto fue porque había importado MX WindowedApplication en lugar de Spark. Tu sugerencia funcionó (utilicé close()). ¡Gracias! – Phil

7

Sé que esta pregunta ha sido contestada y aceptado, pero pensé en compartir, yo uso.

stage.nativeWindow.close(); 
+0

¡Excelente! Esta es la única solución que realmente funcionó para mí, ¡gracias! –

1

acaba de dar una respuesta aquí, porque he buscado una pregunta relacionada y no era capaz de encontrar algo.

Quería hacer algo similar y cerrar una aplicación de AIR cuando se presiona el botón de cierre nativo de la ventana del documento (spark.components.Window), pensando que el contenedor de chispa WindowApplication (la ventana principal de aplicaciones) todavía está activo para contener y administrar el menú nativo (al inicio de la aplicación también se usa para mostrar una pantalla de inicio. Tiene que permanecer abierto ya que si está cerrado, el menú nativo no aparecerá o no será accesible, por lo que su propiedad visible se configurará como falsa))

Mi problema principal fue el evento de cierre de la ventana. Registrarlo con ActionScript como

 this.addEventListener(Event.Closing, windowClosed); 

no funciona: No se ha enviado ningún evento de cierre. La única forma era registrar un controlador de eventos directamente en el elemento s: Window al inicio del archivo MXML.Acabo de tirar en el atributo de cierre:

 closing="window1_closingHandler(event)" 

El evento se distribuye a continuación, y en función de window1_closingHandler-Llamé

 NativeApplication.nativeApplication.exit(); 

que funciona para mí y se apaga toda la aplicación.

Cuestiones relacionadas