Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-08-2011, 10:37   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Question NativeWindows stürzt beim Schließen ab

Hi Leute,

Ich möchte das Schließen eines NativeWindows abfangen. Dazu habe ich ganz oben im mxml-tag eine Funktion namens closing="bla_handler" eingebaut.

der bla_handler sieht so aus:

event.preventDefault();

PHP-Code:
event.preventDefault();            
                
                if(
changerTrigger==true)
                {
                    
Alert.show"Changes will be lost, if you quit now! Really want to quit?""Attention", (Alert.YES Alert.NO), thisalertHandler);
                }
                 else
                {
                    
this.close();
                } 
wenn ich mein "nativeWindow" schließen möchte kracht es bei mir mit dieser Fehlermeldung:
Error #2094: Event dispatch recursion overflow.

Weiß da jemand Rat?

Viele Grüße
Christian
flex5500 ist offline   Mit Zitat antworten
Alt 24-08-2011, 10:59   #2 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
dein "this.close" ruft deinen eventhandler auf und dadurch wieder this.close und dadurch wieder ... --> Stapelüberlauf

schau dir mal dieses Rezept an:
http://cookbooks.adobe.com/index.cfm...s&postId=10364
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 24-08-2011, 11:10   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Hi Frank,

danke für deinen Link. Aber dort wird nur mit AS3 gearbeitet. Meine NativeWindows werden anders erzeugt und besitzen keine eigenen EventListener.

Mir ist aufgefallen dass der selbe Code irgendwo ander klappt mit dem einzigen Unterschied dass ich statt this.close einen exit() benutze allerdings meckert der Compiler bei exit() herum dass diese Methode nicht definiert ist.
flex5500 ist offline   Mit Zitat antworten
Alt 24-08-2011, 11:29   #4 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Du musst deinen Eventlistener entfernen bevor du erneut close(), aufrufst Anderenfalls erzeugst du einen Stapelüberlauf durch eine nicht endende Rekursion.

exit() hat deshalb funktioniert da dieser Aufruf nicht das Fenster schließt sondern die Anwendung beendet. Daher hast du auch keine Rekursion.

exit ist aber eine Methode der NativeApplication und nicht von NativeWindows daher auch die Compilerwarnung.

Zitat:
Aber dort wird nur mit AS3 gearbeitet.
Der Flex Compiler erzeugt aus MXML auch nur As3 Klassen. Die ManagerKlasse kannst du sowohl im Flex als auch im AS3 Kontext einsetzen

Zitat:
Meine NativeWindows werden anders erzeugt und besitzen keine eigenen EventListener.
PHP-Code:
closing="bla" 
ist nichts anderes als
PHP-Code:
this.addEventListener(Event.CLOSINGbla); 
__________________
mfg Frank

Geändert von mildesign (24-08-2011 um 11:45 Uhr)
mildesign ist offline   Mit Zitat antworten
Alt 24-08-2011, 11:50   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Ich hab jetzt versucht meinen "bla" handler umzubauen:

Code:
<mx:Window xmlns:fx="http://ns.adobe.com/mxml/2009"
		   xmlns:s="library://ns.adobe.com/flex/spark"
		   xmlns:mx="library://ns.adobe.com/flex/mx"
                   closing="window_closingHandler(event)">


            protected function window_closingHandler(event:Event):void
			{
							
				this.removeEventListener(Event.CLOSING,window_closingHandler); 
				event.preventDefault();
				
				if(changerTrigger==true)
				{	
					
					Alert.show( "Changes will be lost, if you quit now! Really want to quit?", "Attention", (Alert.YES | Alert.NO), this, alertHandler);
				}
				else
				{
					this.close();
				}				
			}
Allerdings erhalte ich nach wie vor den selben Fehler. Ich denk mal so wie es da steht kann es auch nicht klappen...mir ist leider nichts besseres eingefallen...
flex5500 ist offline   Mit Zitat antworten
Alt 24-08-2011, 13:05   #6 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Ich hab mal kurz ein Beispiel gebaut.
FXP ist leider als Anhang nicht erlaubt daher das FB Projekt als Archivdatei.

Ich glaube das hart verdrahten von closing="bla" ist zur laufzeit nicht mehr so richtig zu lösen wenn du über creationComplete den Listener selbst hinzufügst kannst du diesen auch wieder entfernen.

Wenn du sehen möchtest was der Flex Compiler aus deinem MXML Code gemacht hat kannst du mit dem compilerargument "keep-generated-actionscript=true" dir die Klassen anschauen.
Angehängte Dateien
Dateityp: zip windowTest.zip (6,9 KB, 1x aufgerufen)
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 24-08-2011, 13:09   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
In MXML registrierte Eventhandler kann man nicht entfernen.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-08-2011, 13:18   #8 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
@Omega danke für das statement
ich habs mir grad selber angeschaut.
TestWindow_generated:
PHP-Code:
   // events
        
this.addEventListener("creationComplete"___TestWindow_Window1_creationComplete); 
und die generierte Funktion delegiert dann den Aufruf
PHP-Code:
/**
 * @private
 **/
public function ___TestWindow_Window1_creationComplete(event:mx.events.FlexEvent):void
{
    
window1_creationCompleteHandler(event)

da hat man keine Chance ranzukommen. Höchstens mit Namensraten aber das wird gruselig ;o)
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 24-08-2011, 13:24   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Keine Ursache.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-08-2011, 14:12   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Hi Frank,

danke für dein Projekt leider fehlt da der Ordner libs. Meldet der Compiler..

wenn ich deinen letzten Beitrag verstanden habe, dann ist die Realisierung meines Problem in MXML nicht möglich?

Gruß
Christian

edit: Hab dein Projekt mittels Copy Paste nachgestellt...klappt einwandfrei!!! Vielen lieben dank!

Geändert von flex5500 (24-08-2011 um 14:16 Uhr)
flex5500 ist offline   Mit Zitat antworten
Alt 24-08-2011, 14:55   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Registriere einen Event Handler für preinitialize in MXML und dann einen für closing in dem ActionScript.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-08-2011, 15:06   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Danke ich werds versuchen^^
flex5500 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
air, close, event, flex, native window

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
flash stürzt beim debuggen ab vato ActionScript 3 3 02-03-2011 16:29
Error: Flash stürzt beim Debuggen ab!!! glObe-pUre Flash 8 3 11-10-2007 13:07
Flash stürzt beim Testen ab, warum? mr_groove Flash 8 2 10-12-2006 13:50
Beim Laden von *.fla stürzt MX2004 ab waskuckstdu Flash Einsteiger 1 21-02-2006 10:06
Flash MX stürzt beim start ab BuckelEde Flash MX 7 19-02-2003 22:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele