在弹出alert提示框之后,有没有用代码控制的方法自动删除一个alert提示框?该如何处理
在弹出alert提示框之后,有没有用代码控制的方法自动删除一个alert提示框???
在弹出alert提示框之后,有没有用代码控制的方法自动删除一个alert提示框???
------解决方案--------------------
AlertManager.as:
在弹出alert提示框之后,有没有用代码控制的方法自动删除一个alert提示框???
------解决方案--------------------
AlertManager.as:
- JScript code
package { import flash.display.Sprite; import flash.events.TimerEvent; import flash.utils.Dictionary; import flash.utils.Timer; import mx.controls.Alert; import mx.events.CloseEvent; import mx.managers.PopUpManager; import mx.utils.UIDUtil; public class AlertManager { private static var alerts:Dictionary = new Dictionary(); private static var timers:Dictionary = new Dictionary(); public static function showAlert(timeout:int = 0, text:String = "", title:String = "", flags:uint = 0x4, parent:Sprite = null, closeHandler:Function = null, iconClass:Class = null, defaultButtonFlag:uint = 0x4):Alert { var alert:Alert = Alert.show(text, title, flags, parent, closeHandler, iconClass, defaultButtonFlag); alert.id = "Alert" + UIDUtil.createUID(); if (timeout > 0) { var timer:Timer = new Timer(timeout, 1); timer.addEventListener(TimerEvent.TIMER_COMPLETE, tiemrCompleteHandler); timer.start(); alert.addEventListener(CloseEvent.CLOSE, alertCloseHandler); alerts[timer] = alert; timers[alert.id] = timer; } return alert; } private static function tiemrCompleteHandler(event:TimerEvent):void { if (alerts[event.target]) { var alert:Alert = alerts[event.target] as Alert; if (timers[alert.id]) { var timer:Timer = timers[alert.id]; delete timers[alert.id]; delete alerts[timer]; } PopUpManager.removePopUp(alert); alert.dispatchEvent(new CloseEvent(CloseEvent.CLOSE, false, false, 0)); } } private static function alertCloseHandler(event:CloseEvent):void { var alert:Alert = event.target as Alert; if (event.detail != Alert.YES && event.detail != Alert.NO && event.detail != Alert.OK && event.detail != Alert.CANCEL) { if (timers[alert.id]) { var timer:Timer = timers[alert.id] as Timer; timer.stop(); if (alerts[timer]) delete alerts[timer]; delete timers[alert.id]; } } } } }