Je l'ai fait beaucoup de programmation C# avec les deux Winforms et WPF. Je travaille maintenant sur une application Flex/Air pour le support multi-plateforme. Mais ceci est mon premier projet de flex, donc j'apprends comme je vais.Flex: Popup Window - Get [ok] ou [Annuler]
J'ai une fenêtre que je veux popup, que l'utilisateur remplira un formulaire, puis appuyez sur OK ou sur Annuler. Je l'ai mis la même façon que j'aurais en C#, mais il ne voit pas le problème, et je ne peux pas vraiment un moyen de faire faire ce que je veux.
EDIT: Je suis en train d'événements maintenant, les événements ne semblent pas être manipulés ...
EDIT à nouveau: Oh, c'est parce que le gestionnaire de pop-up semble créer une nouvelle instance de l'objet Form, plutôt que d'utiliser celui que j'ai déjà créé.
donc dans la méthode showWindow, je mets dans ce code plutôt que le gestionnaire popup:
parent.addChild(this);
alors je l'enlever quand je le ferme. Le seul problème est qu'il ne désactive pas le reste du parent comme le fait le gestionnaire de popup. Des suggestions à ce sujet?
PARENT:
private function btnAdd_Clicked():void
{
var form:Form = new Form();
form.addEventListener(CloseEvent.CLOSE, onFormClosed, false, 0, true);
recipeForm.showWindow(this);
}
private function onFormClosed(e:CloseEvent):void
{
//none of these Alerts are ever shown. I also tried breakpoints in debug to try an follow the code, with no luck
Alert.show("Closed");
if(e.detail == Alert.OK)
{
Alert.show("OK");
}
else if(e.detail == Alert.CANCEL)
{
Alert.show("Cancel");
}
}
ENFANT:
private function btnCancel_Clicked():void
{
okClicked = false;
closeWindow();
}
public function closeWindow():void
{
var e:CloseEvent = new CloseEvent(CloseEvent.CLOSE);
e.detail = okClicked ? Alert.OK : Alert.CANCEL;
dispatchEvent(e);
PopUpManager.removePopUp(this);
}
public function showWindow(parent:WindowedApplication):void
{
var window:IFlexDisplayObject = PopUpManager.createPopUp(parent, RecipeForm, true);
PopUpManager.centerPopUp(window);
}
Cela semble que cela devrait fonctionner, mais l'événement ne semble pas seulement être manipulés ... enfant: fonction publique closeWindow(): void {var e \t: CloseEvent = new CloseEvent (CloseEvent. FERMER); \t e.detail = okClické? Alert.OK: Alert.CANCEL; \t dispatchEvent (e); \t \t PopUpManager.removePopUp (this); } parent: fonction privée btnAddRecipe_Clicked(): void {\t \t \t \t \t var recipeForm: RecipeForm = new RecipeForm(); \t recipeForm.addEventListener (CloseEvent.CLOSE, onRecipeFormClosed, false, 0, true); \t \t recipeForm.showWindow (this); } fonction privée onRecipeFormClosed (e: CloseEvent): void {// n'obtient obtient ici ...:/ } – Joel
oh, les commentaires ne permettent pas de sauts de ligne ... oopps ... Je vais l'éditer dans mon post original. – Joel
Eh bien, il semble que showWindow() renvoie une nouvelle instance de votre classe RecipeForm. Vous souhaitez attacher l'écouteur d'événement à cette classe. Vous devez vous assurer que l'objet dont vous envoyez l'événement est le même que celui sur lequel l'écouteur est enregistré. –