Poddany przykład poniżej przenosi obsługę zdarzenia na funkcję zewnętrzna np. z poziomu głównej aplikacji.
Oto główna paczka z komponentem rozszerzonym Alert;
package myComponent { import mx.controls.Alert; import mx.core.Application; import mx.events.CloseEvent; public class alert extends Alert { yesLabel = "Tak"; noLabel = "Nie"; cancelLabel = "Anuluj"; [Bindable] [Embed(source="icons/dialog-information.png")] private static var IconInfo:Class; [Bindable] [Embed(source="icons/dialog-question.png")] private static var IconQuestion:Class; [Bindable] [Embed(source="icons/dialog-error.png")] private static var IconError:Class; [Bindable] [Embed(source="icons/dialog-warning.png")] private static var IconWarning:Class; private static var ParentApp:* = Application.application; private static var idFun: uint = 0; private static var bQuestion: Boolean = false; public function alert() { super(); } public static function warning(Msg : String) : void { show(Msg,"Ostrzeżenie",mx.controls.Alert.OK,null,closeHandle,IconWarning); } public static function error(Msg : String) : void { show(Msg,"Błąd",mx.controls.Alert.OK,null,closeHandle,IconError); } private static function closeHandle(event:CloseEvent):void{ switch (event.detail) { case Alert.OK: break; case Alert.YES: if (bQuestion) ParentApp.AlertQuestionFun(idFun); break; } } public static function info(Msg : String) : void { show(Msg,"Informacja",mx.controls.Alert.OK, null , closeHandle, IconInfo); } public static function question(Msg : String, funId : uint) : void { idFun = funId; bQuestion = true; show(Msg,"Pytanie",mx.controls.Alert.YES | mx.controls.Alert.NO, null, closeHandle, IconQuestion); } } }
Do głównej aplikacji importujesz rozszerzoną i dodajesz funkcję obsługi
<mx:Script> <![CDATA[ import myComponent.alert; public function AlertQuestionFun(fun : int) : void { switch (fun) { case 1: {Alert.show("Test - wykonanie funkcji obsługi nr 1");} break; case 2: {Alert.show("Test - wykonanie funkcji obsługi nr 2");} break; } } ]]> </mx:Script>
I używasz rozszerzonej klasy w ten sposób:
alert.info("Ważne informacje dotyczące wykonywanych operacji");- dla wyświetlenia informacji
alert.warning("Uwaga! Nie można wykonać tej czynności");
- dla wyświetlenia ostrzeżenia
alert.error("Kopiowanie danych nie powiodło się!");
- dla wyświetlenia błędu wykonania
alert.question("Czy napewno chcesz to zrobic?", 1);
- dla wyświetlenia pytania o wykonanie czynności.
Zwróć uwagę, że w ostatnim przykładzie przekazujesz nr funkcji do wykonania (1) w przypadku akceptowanie czynności