1

このようにメインアプリケーションから呼び出すタイトルウィンドウを実装しています

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

タイトルウィンドウはこれになります

<?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>

タイトル ウィンドウには、sample vbox という別の子コンポーネントがあり、このコンポーネントは次のようになります。

<?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>

私の質問は、sampleVBox コンポーネントのボタンを使用してタイトル ウィンドウを閉じたいということです。誰かがこれで私を助けてください。

前もって感謝します!

4

1 に答える 1

1

SampleVBox1 つの解決策は、親TitleWindowがリッスンするコンポーネントからイベントをディスパッチすることです。これを行うにSampleVBoxは、クラスがそのようなイベントをディスパッチすることを示すメタデータをクラスに追加します。

<?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>

が「close」イベントをディスパッチすることを宣言したので、SampleVBoxでリッスンできます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>
于 2013-07-14T23:47:34.243 に答える