0

我开发了一个应用程序,其中包含如此多的警报消息,我想在屏幕的特定位置显示所有警报消息。我尝试了以下代码,但它适用于单个警报消息。有什么方法可以申请我的应用程序中的所有警报消息。

  myAlert = Alert.show('Hello World');
  PopUpManager.centerPopUp(myAlert);
  myAlert.x = 0;
  myAlert.y = 0;

提前致谢

4

1 回答 1

0

就像 www-flextras.com 建议的那样,您可以使用这样的类来放置逻辑以定位警报消息。

您需要等待CREATION_COMPLETE事件发生,然后才能设置警报的位置。请注意,您也可以_alert.move(_nextX, _nextY)在以下示例中使用。

package
{
    import flash.display.Sprite;

    import mx.controls.Alert;
    import mx.core.IFlexModuleFactory;
    import mx.events.FlexEvent;

    public class MyAlertFactory
    {
        private static const MAX_WIDTH:uint = 320;
        private static const MAX_HEIGHT:uint = 280;

        private static var _nextX:int = 0;
        private static var _nextY:int = 0;

        public static function show(text:String, title:String = "",
                                    flags:uint = 4, parent:Sprite = null,
                                    closeHandler:Function = null,
                                    iconClass:Class = null,
                                    defaultButtonFlag:uint = 4,
                                    moduleFactory:IFlexModuleFactory = null):Alert {

            var alert:Alert = Alert.show(text, title, flags, parent,
                closeHandler, iconClass, defaultButtonFlag, moduleFactory);
            alert.addEventListener(FlexEvent.CREATION_COMPLETE, handleAlertCreation);

            return alert;
        }

        private static function handleAlertCreation(event:FlexEvent):void
        {
            _nextX = (_nextX + 20) % MAX_WIDTH;
            _nextY = (_nextY + 15) % MAX_HEIGHT;

            var alert:Alert = Alert(event.currentTarget);
            alert.x = _nextX;
            alert.y = _nextY;
            alert.removeEventListener(FlexEvent.CREATION_COMPLETE, handleAlertCreation);
        }
}
于 2013-03-17T00:53:32.097 回答