Gibt es eine Möglichkeit, ein benutzerdefiniertes Ereignis zu schreiben, das ausgelöst wird, wenn der Benutzer außerhalb dieser benutzerdefinierten Komponenteninstanz klickt? Im Prinzip überall sonst in der Flex-App. Danke.Click-Outs für benutzerdefinierte Komponenten in Flex
Antwort
Sie können das Ereignis FlexMouseEvent.MOUSE_DOWN_OUTSIDE
verwenden. Zum Beispiel:
myPopup.addEventListener(
FlexMouseEvent.MOUSE_DOWN_OUTSIDE,
function(mouseEvt:FlexMouseEvent):void
{
PopUpManager.removePopUp(myPopup);
}
);
stage.addEventListener(MouseEvent.CLICK, stgMouseListener, false, 0, true);
...
private function stgMouseListener(evt:MouseEvent):void
{
trace("click on stage");
}
private function yourComponentListener(evt:MouseEvent):void
{
trace("do your thing");
evt.stopPropagation();
}
habe diese von Senocular. Ich denke, es trifft auf dieses Thema zu, zumindest hat es den Trick für mich getan. Was jedierikb vorgeschlagen scheint, scheint der gleiche zu sein, aber ein wenig unvollständig.
Ereignispropagierung Verhindern
Wenn Sie weitere Ausbreitung eines Ereignisses verhindern möchten, können Sie es zu tun, so in einem Ereignis-Listener mit stopPropagation() (flash.events.Event.stopPropagation()) oder stopImmediatePropagation stoppen() (flash.events.Event.stopImmediatePropagation()). Diese Methoden werden von den Ereignisobjekten aufgerufen, die an Ereignislistener übergeben werden, und stoppen das Ereignis im Wesentlichen - zumindest nach diesem Zeitpunkt.
stopPropagation verhindert, dass Objekte, die über den aktuellen Wert hinausgehen, das Ereignis empfangen, und dies kann in jeder Phase des Ereignisses erfolgen. stopImmediatePropagation macht dasselbe, aber auch den zusätzlichen Schritt, zusätzliche Ereignisse innerhalb des aktuellen Ziels zu verhindern, die das Ereignis ebenfalls empfangen. Wo also stopPropagation verhindern würde, dass das Elternelement von Sprite A das Ereignis empfängt, würde stopImmediatePropagation verhindern, dass das Elternelement von Sprite A und andere Listener, die das Sprite A hören, das Ereignis empfangen.
Beispiel: Umschalten zwischen der Verwendung von stopPropagation und stopImmediatePropagation Actionscript-Code:
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0x4080A0);
circle.graphics.drawCircle(50, 50, 25);
addChild(circle);
circle.addEventListener(MouseEvent.CLICK, clickCircle1);
circle.addEventListener(MouseEvent.CLICK, clickCircle2);
stage.addEventListener(MouseEvent.CLICK, clickStage);
function clickCircle1(evt:MouseEvent):void {
evt.stopPropagation();
// evt.stopImmediatePropagation();
trace("clickCircle1");
}
function clickCircle2(evt:MouseEvent):void {
trace("clickCircle2");
}
function clickStage(evt:MouseEvent):void {
trace("clickStage");
}
den Kreis klicken und sieht, wie das Ereignis mit jeder Methode gestoppt wird. stopPropagation verhindert die Bühne aus dem Empfang des Ereignisses während stopImmediatePropagation auch clickCircle2 verhindert, in Anerkennung der Ereignis
normale Ausgabe
clickCircle1
clickCircle2
clickStage
stopPropagation Ausgang
clickCircle1
clickCircle2
stopImmediatePropagation Ausgang
clickCircle1
Flex/Aktionencri pt 3 - in der Nähe auf Popupanchor Maus geklickt irgendwo außerhalb Popup Anker
für 4.6 SDK dies versuchen ..
frmPUA.popUp.addEventListener (FlexMouseEvent.MOUSE_DOWN_OUTSIDE, menuPopOutside, falsch, 0, true);
Voll Code ist erhältlich bei
- 1. Flex 3 benutzerdefinierte Komponenten Positionierung - Popups
- 2. Flex: wenn Komponenten in flex
- 3. Passing Konstruktorparameter für MXML-basierte benutzerdefinierte Flex-Komponenten
- 4. Bewegliche Komponenten in Flex?
- 5. Flex List benutzerdefinierte Farbe für Zeilen
- 6. Pass Daten zwischen Flex-Komponenten
- 7. flex 3 Reihenfolge der Komponenten laden
- 8. Hinzufügen von Flex-Komponenten mit XML
- 9. Hinzufügen von Komponenten zu CoverFlow in Flex
- 10. Benutzerdefinierte Form Panel/Form in Flex
- 11. Wie Flex-Komponenten in FireFox3 drucken?
- 12. Skin für WindowedApplikationszeichnung über Komponenten
- 13. JSF ResponseWriter benutzerdefinierte Komponenten
- 14. Erweiterung Flex Datagrid für benutzerdefinierte Sortierfunktion
- 15. Flex- seltsame Hervorhebung für benutzerdefinierte Suche Komponente
- 16. flex, AdvancedDataGrid, benutzerdefinierte itemrenderer
- 17. Flex-Komponenten-Kit für Flash, Laden zur Laufzeit
- 18. Flex 4.5: Benutzerdefinierte Komponente wird nicht in benutzerdefiniertem ItemRenderer angezeigt
- 19. Benutzerdefinierte Komponenten und ASP.NET MVC
- 20. EventListeners und benutzerdefinierte GUI-Komponenten
- 21. Flex Drag n Drop zwischen Komponenten
- 22. Flex benutzerdefinierte Preloader Bilder loading
- 23. Wie kann ich horizontale Bildlaufleisten in Flex-Komponenten deaktivieren?
- 24. Wie verwalten Sie Stile für untergeordnete Komponenten?
- 25. Glatte Gleitanimation in Flex mit großen Mengen an Komponenten
- 26. für Schleife in Flex
- 27. Flex 3-Ereignisausbreitung für eine benutzerdefinierte Composite-Komponente?
- 28. Lernen, benutzerdefinierte Silverlight-Komponenten zu erstellen
- 29. Browser Kompilierungsfehler für Flex
- 30. Flex: Sort - Eine benutzerdefinierte compareFunction schreiben?
die FlexMouseEvent.MOUSE_DOWN_OUTSIDE jedoch ausgestrahlt wird nur, wenn Sie die Komponente mit dem Popupmanager hinzufügen, nicht, wenn Sie eine manuelle addChild tun (siehe http: //www.mail -archive.com/[email protected]/msg14875.html und sehe meine letzte Stunde Haare ziehen) – iddqd