Использование Alert.show во Flex 3

В Flex 3, когда я использую

Alert.show("some text");

Я получу предупреждающее сообщение вместе с кнопкой ОК. Когда я нажимаю кнопку ОК, я получаю еще одно предупреждающее сообщение. Я пробовал следующий код, но он не работает.

Alert.show(" Simulation for " + id_formulator.nme + " Campaign", null, mx.controls.Alert.OK, this, alertListener, null, mx.controls.Alert.OK);

private function alertListener(eventObj:Event):void {
    if (eventObj.detail == mx.controls.Alert.OK) {
        Alert.show("next message");
    }
}

person dpaksp    schedule 12.07.2010    source источник
comment
Не могли бы вы перефразировать свой вопрос и уточнить, чего вы хотите достичь? Вы хотите, чтобы второе предупреждение отображалось после первого или НЕ отображалось?   -  person Helen    schedule 12.07.2010
comment
Кстати, чтобы отформатировать блок кода в сообщении, вы можете сделать для него отступ в четыре пробела или выбрать его и нажать кнопку кода (101010) на панели инструментов редактора.   -  person Helen    schedule 12.07.2010


Ответы (1)


Проблема в том, что в вашей функции alertListener вы объявили параметр eventObj как событие типа Event. У класса Event нет поля сведений. Однако подкласс CloseEvent это делает. Также случается, что это тип события, отправляемого закрывающимся предупреждением.

Кроме того, вы можете использовать ключевое слово this только в контексте, в котором оно имеет область видимости. Поэтому вам нужно обернуть его внутри функции инициализации (а не просто плавать в статическом коде. Вам нужно будет добавить initialize="showAlerts()" в окно, чтобы это произошло при открытии окна. В противном случае просто замените событие по вашему выбору

Кроме того, я бы предложил использовать директиву import, поскольку она значительно сокращает ваш код, а сокращенный код легче поддерживать.

Итак, ваш код должен быть:

import mx.controls.Alert;
import mx.events.CloseEvent;

private function showAlerts():void {
    Alert.show("Simulation for " + id_formulator.nme + " Campaign", null, Alert.OK, this, alertListener, null, Alert.OK);
}

private function alertListener(eventObj:CloseEvent):void {
    if (eventObj.detail == Alert.OK) {
        Alert.show("next message");
    }
}
person SEK    schedule 12.07.2010