如何将所有警报消息定位在屏幕的特定位置?

时间:2013-03-16 05:24:39

标签: actionscript-3 flex flex4 flex3 flex4.5

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

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

先谢谢

1 个答案:

答案 0 :(得分: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);
        }
}