0

mx.controls.Alert.show()でアラート ボックスを表示し、そのボタンをマウス (または Enter キー) でクリックするか、任意の場所をクリックすると、これらのイベントは親ウィンドウにも渡され、最終的にそこでボタンがトリガーされます。

アラートインスタンスの属性を設定するなど、これを防ぐ簡単な方法はありますか?

4

1 に答える 1

0

show()closeHandlerでパラメーターを設定すると、 event.stopPropagation()を呼び出して、後続のノードでイベントが処理されないようにすることができます。

コードは次のようになります。

Alert.show("Message", "Title", Alert.OK, parent, onClose);

function onClose(event:CloseEvent):void
{
    event.stopPropagation();
    // Do close stuff here
}

編集

Flex 4.6 の例を Flash Builder 4.6 に追加:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"
    creationComplete="onCreationComplete(event)">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.CloseEvent;
            import mx.events.FlexEvent;

            private function onCreationComplete(e:FlexEvent):void
            {
                addEventListener(MouseEvent.CLICK, onAppClick);
                showAlert();
            }

            private function showAlert():void
            {
                Alert.show("An Alert", "Alert Title", Alert.OK | Alert.CANCEL, this, onAlertClose);
            }

            private function onAlertClose(e:CloseEvent):void
            {
                e.stopPropagation();
                trace("Alert Close");
            }

            private function onAppClick(e:MouseEvent):void
            {
                trace("App Click");
            }

            private function onBtnClick(e:MouseEvent):void
            {
                trace("Button Click");
            }

        ]]>
    </fx:Script>

    <s:layout>

        <s:VerticalLayout
            gap="12"/>

    </s:layout>

    <s:Button
        label="A Clickable Button"
        click="onBtnClick(event)"/>

    <s:Button
        label="Show Alert"
        click="showAlert()"/>


</s:WindowedApplication>
于 2013-01-16T17:39:09.360 に答える