2013-07-14 1 views
1

Je place une fenêtre de titre, qui appelle de la principale appication comme celui-ciFermer la fenêtre de titre de son flex composant enfant

protected function sampleButton_clickHandler(event:MouseEvent):void 
      { 
       var ttlWndw:SampleTitleWindow = PopUpManager.createPopUp(FlexGlobals.topLevelApplication as DisplayObject, SampleTitleWindow, true) as SampleTitleWindow; 
       PopUpManager.centerPopUp(ttlWndw); 
      } 

la fenêtre de titre sera cette

<?xml version="1.0" encoding="utf-8"?> 
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       xmlns:local="*" 
       width="288" height="230"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <local:SampleVBox id="sampleVBox" x="108" y="83"/> 
</s:TitleWindow> 

dans le titre fenêtre j'ai eu un autre composant enfant appelé échantillon vbox et ce composant ressemble à ceci

<?xml version="1.0" encoding="utf-8"?> 
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Script> 
     <![CDATA[ 
      protected function closeBtn_clickHandler(event:MouseEvent):void 
      { 

      } 
     ]]> 
    </fx:Script> 


    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <s:Button id="closeBtn" label="Close" click="closeBtn_clickHandler(event)"/> 
</mx:VBox> 

Ma question est, je veux fermer la fenêtre de titre en utilisant le bouton dans le composant sampleBox. s'il vous plaît, quelqu'un m'aider dans cela.

Merci d'avance!

Répondre

1

Une solution consiste à envoyer un événement du composant SampleVBox que le parent TitleWindow écoutera. Pour ce faire, ajoutez des métadonnées à votre classe SampleVBox qui indique les dépêches de classe un tel événement:

<?xml version="1.0" encoding="utf-8"?> 
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Metadata> 
     [Event(name="close", type="flash.events.Event")] 
    </fx:Metadata> 

    <fx:Script> 
     <![CDATA[ 
      protected function closeBtn_clickHandler(event:MouseEvent):void 
      { 
       dispatchEvent(new Event(Event.CLOSE)); 
      } 
     ]]> 
    </fx:Script> 

    <s:Button id="closeBtn" label="Close" click="closeBtn_clickHandler(event)"/> 
</mx:VBox> 

Maintenant que le SampleVBox déclare qu'il envoie un événement « proche », vous pouvez écouter dans la TitleWindow :

<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       xmlns:local="*" 
       width="288" height="230"> 

    <fx:Script> 
     <![CDATA[ 
      protected function onSampleBoxClose():void 
      { 
       PopUpManager.removePopUp(this); 
      } 
     ]]> 
    </fx:Script> 

    <local:SampleVBox id="sampleVBox" x="108" y="83" close="onSampleBoxClose()"/> 
</s:TitleWindow> 
+0

Merci sunil, tu as sauvé ma journée – dam

Questions connexes