2010-11-12 17 views
3

Essayer d'empêcher l'application de l'arrêt lorsque cliqué sur le bouton X, il fermer encore, mais le processus d'AIR est en cours d'exécution dans le gestionnaire de tâches. Quel problème avec le code?air 2.0 sur l'application cesser de fumer, appelez preventDefault

application complète:

NativeApplication.nativeApplication.addEventListener(Event.EXITING, onExiting); 

Code de fermeture:

private function onExiting(e:Event):void 
{ 
e.preventDefault(); 
} 

Répondre

4

Essayez Event.CLOSING. C'est ce que j'utilise pour annuler la fermeture.

Event.EXITING se produit après le retrait de la fenêtre et ne doit être utilisé que pour le nettoyage, et non pour empêcher la fermeture de l'application.

De l'docs:

Sous Windows, la seule fois que vous aurez l'événement exiting après la fermeture de la dernière fenêtre (quand autoExit = true).


Exemple application "unclosable":

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         initialize="init()"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 

      private function init():void{ 
       this.addEventListener(Event.CLOSING, function(e:Event):void{ 
        e.preventDefault(); 
        Alert.show('Unclosable!'); 
       }); 
      } 
     ]]> 
    </fx:Script> 
</s:WindowedApplication> 

Bonne chance,
Alin

+0

erm, il fermera toujours même lorsque je passerai à votre solution. Sous Windows 7. – Proyb2

+0

Cela fonctionne également sous Windows 7. J'utilise exactement la même chose dans une application pour demander à enregistrer quand l'utilisateur veut fermer la fenêtre du bouton x. Utilisez-vous 'Event.CLOSING', et non' Event.CLOSE'? –

+0

J'utilise la fermeture, peut-être pourriez-vous poster un exemple de code? Apprécier. – Proyb2

0

traitement des messages d'alerte se produit dans différents fil que les fils d'application si l'application n'attendez pas un message d'alerte boîte. L'astuce consiste à avoir une variable globale avec la valeur initialisée de false. Sur le gestionnaire d'événements pour close, annulez l'événement close si la valeur n'est pas true. Cela permet d'afficher le message d'alerte. Si l'utilisateur appuie sur Oui, réglez la variable sur true et de nouveau sur la fonction de sortie de feu.

 private var boolExit:Boolean=false; 

     private function alertClickHandler(event:CloseEvent):void{ 
      if(event.detail==Alert.YES){ 
       boolExit=true; 
       NativeApplication.nativeApplication.exit(); 
      } 

     } 


     private function AppExit(e:Event):void{ 
      if(!boolExit) 
       e.preventDefault(); 

      Alert.show("Do you want to exit application?", 
       "Exit Confirmation", 
       Alert.YES|Alert.NO,null, 
       alertClickHandler 
       ); 
     } 

     public function init():void 
     { 
      . . . 
      this.addEventListener(Event.CLOSING,AppExit); 
      . . . 
     }