2011-09-29 52 views
0

我正在使用IFrame並動態添加它,並隱藏了一個新的Alert.show和以前製作的TitleWindow。Flex 4.5安排gui組件

我該如何安排它回去或在所有方面製作警報或窗口?

+0

你能解釋一些關於你在做什麼,並可能顯示一些代碼嗎? – JeffryHouser

+0

使用來自谷歌代碼的flex-iframe製作web應用程序 – yolo

回答

0

不幸的是,你不能,因爲他們是不同的看法heirachy的父母。

彈出窗口由SWF管理,並且是應用程序顯示列表的子項。 IFrame由HTML管理,並且是DOM的子項。

即:

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

遺憾的是這裏沒有解決,我所知道的,你需要無論是iframe中顯示彈出式或刪除iframe來顯示彈出。

+0

可惜,正在使用http://code.google.com/p/flex-iframe/ – yolo

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; 
    } 
+0

巧妙的技巧,但HTML僅適用於AIR,不適用於基於瀏覽器的應用程序(哦,諷刺)。我假設OP正在討論一個瀏覽器應用程序。 –

+0

那麼你可以在任何組件中使用這種技術。只需用你的組件替換「htmlLoader」,用它的父項代替「html」(如s:Group) – Exort

+0

不能用iFrame。該技巧假設內容正在由Flash Player呈現。當您使用IFrame時,內容由瀏覽器呈現,並定位以顯示它是應用程序的一部分。試圖讓Flash Player捕獲它的位圖數據將不起作用。 –