【问题标题】:Flex 4.5 arrange gui componentsFlex 4.5 排列 gui 组件
【发布时间】:2011-09-29 13:09:18
【问题描述】:

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

我如何安排它返回或使警报或窗口最重要?

【问题讨论】:

  • 你能解释一下你在做什么,并可能显示一些代码吗?
  • 使用谷歌代码中的 flex-iframe 制作网络应用

标签: apache-flex user-interface


【解决方案1】:

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

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

即:

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

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

【讨论】:

    【解决方案2】:

    我猜你正在使用 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;
        }
    

    【讨论】:

    • 巧妙的技巧,但 HTML 只是 AIR,在基于浏览器的应用程序中不可用(哦,具有讽刺意味)。我假设 OP 正在谈论浏览器应用程序。
    • 事实上,您可以将此技术用于任何组件。只需将“htmlLoader”替换为您的组件,将“html”替换为它的父组件(如 s:Group)
    • 不使用 iFrame。该技巧假定内容是由 Flash Player 呈现的。当您使用 IFrame 时,内容由浏览器呈现,并定位为显示它是应用程序的一部分。试图让 Flash Player 捕获它的位图数据是行不通的。
    猜你喜欢
    • 2011-09-23
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多