Flex 4.5安排gui组件

时间:2011-09-29 13:09:18

标签: flex user-interface

我正在使用IFrame并动态添加它,它隐藏了一个新的Alert.show和一个以前制作的TitleWindow。

如何安排它返回或将警报或窗口置于最重要的位置?

2 个答案:

答案 0 :(得分:0)

我猜你正在使用mx:HTML组件来显示一些HTML。我的项目中遇到了同样的问题,IFrame对象总是显示在所有内容之上。

一种有效的解决方法是隐藏HTML组件并显示它的位图快照。这样,警报或任何弹出窗口都会显示在它上面。

我是这样做的

    private var _snapshotImage:Bitmap;

    private function toggleSnapshotMode(htmlVisible:Boolean):void
    {
        if(!htmlVisible)
        {
            var bitmapData:BitmapData = new BitmapData(htmlLoader.width,htmlLoader.height,false);
            bitmapData.draw(htmlLoader,null,null,null,null,true);
            _snapshotImage = new Bitmap(bitmapData);
            _snapshotImage.x = htmlLoader.x;
            _snapshotImage.y = htmlLoader.y;
            html.addChildAt(_snapshotImage,0);
        }
        else
        {
            html.removeChild(_snapshotImage);
        }

        html.htmlLoader.visible = htmlVisible;
    }

答案 1 :(得分:0)

不幸的是,你不能,因为他们是不同观点的父母heirachy的。

Popup由SWF管理,是应用程序显示列表的子代。 IFrame由HTML管理,并且是DOM的子级。

即:

 + HTML Page
 |
 |
 +---IFrame
 |
 +---SWF (Flex Application)
      |
      +--- System Manager
      |       |
      |       +---- Popup's // <---- Your Popup is here
      +--- Application     

不幸的是,我知道没有解决方案,你需要在IFrame中显示弹出窗口,或者删除IFrame以显示弹出窗口。