沒有與Flex的IFrame體驗這裏只是FYI但在通用術語,你可以無效組件的大小或無效,則顯示列表調用,以迫使LayoutManager的重新計算元件的大小,現在驗證並且它是兒童(或者簡單地在使顯示列表無效的情況下繪製):
我在這裏看到的困難部分是確定您何時想要發生這種情況(即從滾動條捕獲某種事件)。出於測試目的,你可以只創建一個按鈕,並在它的點擊處理程序執行以下操作:
facebookIFrame.invalidateSize();
facebookIFrame.invalidateDisplayList();
facebookIFrame.validateNow();
如果這個作品出來,那麼你只需要找到從滾輪或帆布滾動正在發生的時候,告訴你相應的事件(最壞的情況下,你可以捕獲鼠標標記一個標誌,然後捕獲mouseMove,如果該標誌設置,然後運行代碼無效/重新驗證)。基本上,佈局/圖畫的工作原理是UIComponents有標誌讓它知道什麼時候需要重新計算某個東西的大小或重繪它,這樣一切都不會總是隻重繪那些需要它的組件。在這種情況下,似乎FacebookIFrame在某些時候不會失效。讓我知道我是否可以再幫忙,或者如果這不起作用。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
height="100%"
width="100%"
xmlns:code="http://code.google.com/p/flex-iframe/"
mouseDown="application1_mouseDownHandler(event)"
mouseUp="application1_mouseUpHandler(event)"
mouseMove="application1_mouseMoveHandler(event)">
<mx:Script>
<![CDATA[
var isMouseDown:Boolean;
protected function button1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
facebookIFrame.invalidateSize();
facebookIFrame.invalidateDisplayList();
facebookIFrame.validateNow();
}
protected function application1_mouseDownHandler(event:MouseEvent):void
{
isMouseDown = true;
}
protected function application1_mouseUpHandler(event:MouseEvent):void
{
isMouseDown = false;
}
protected function application1_mouseMoveHandler(event:MouseEvent):void
{
if(isMouseDown)
{
facebookIFrame.invalidateSize();
facebookIFrame.invalidateDisplayList();
facebookIFrame.validateNow();
}
}
]]>
</mx:Script>
<mx:Spacer height="1000"/>
<mx:Button label="Test Invalidation"
click="button1_clickHandler(event)"/>
<mx:HBox visible="true" backgroundColor="#cccccc" id="facebookhbox" width="100%" height="80" horizontalAlign="center" verticalAlign="middle" verticalGap="0" verticalScrollPolicy="off">
<mx:Canvas id="facebookcanvas" visible="true" x="0" y="0" width="650" height="80">
<code:IFrame visible="true" y="0" x="0" id="facebookIFrame" source="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.examplelink.com&layout=standard&show_faces=true&width=450&action=like&colorscheme=light&height=80" width="450" height="80"/>
</mx:Canvas>
</mx:HBox>
</mx:Application>
更新以包括顯示例如工作一個完整的應用程序,這絕不是一個做事的好方法,這是由於在這應該是固定的,iframe代碼中的錯誤(雖然我不確定錯誤存在的方式或位置應該使它在適當的位置無效)。
Shaun
Shaun,非常感謝您的時間迴應。我現在要嘗試所有這些。 – Fostah 2011-02-04 23:18:47