Използване на Alert.show във Flex 3

Във Flex 3, когато използвам

Alert.show("some text");

Ще получа предупредително съобщение заедно с бутона OK. Когато натисна бутона OK, получавам друго предупредително съобщение. Опитах следния код, но не работи.

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 го прави. Също така се случва да бъде типът на събитието, изпратено от предупреждение, което се затваря.

Освен това можете да използвате тази ключова дума само в контекст, в който има обхват. Така че трябва да го обвиете във функция за инициализиране (вместо просто да плавате в статичен код. Ще трябва да добавите initialize="showAlerts()" към прозореца, за да може това да се случи, когато прозорецът се отвори. В противен случай просто заменете със събитие по ваш избор

Освен това бих предложил да използвате директивата за импортиране, тъй като тя прави вашия код значително по-кратък и краткият код е по-лесен за поддръжка.

Така че вашият код трябва да бъде:

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