ちょうどFYIここでのFlexのIFrameではありません経験が、一般的な用語で、あなたは、要素のサイズを再計算するのLayoutManagerを強制するために、今のvalidateを呼び出してコンポーネントのサイズを無効化または表示リストを無効にすることができます
私がここに見ている難しい部分は、それが起こることを正確に思いついていることです(スクロールバーから何らかのイベントをキャプチャしています)。テスト目的のためにあなただけのボタンを作成することができますし、それのクリックハンドラに次の操作を行います
facebookIFrame.invalidateSize();
facebookIFrame.invalidateDisplayList();
facebookIFrame.validateNow();
これがうまくいく場合はスクロールが発生しているとき、あなたはちょうどあなたに伝えスクローラやキャンバスから適切なイベントを見つける必要があります(最悪の場合、マウスのマークをキャプチャしてから、mouseMoveをキャプチャし、フラグがセットされていれば、コードを実行して無効化/再検証することができます)。基本的にレイアウト/描画の仕組みは、UIComponentに何かのサイズを再計算するか、再描画する必要があるかを知らせるフラグがあるということです。このようにして、必要なコンポーネントだけが常に再描画されるわけではありません。この場合、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
これは完璧に機能しました!ありがとう! – Fostah
@Fotashあなたがあなたの新しいFlexについて言及して以来、私は助けてくれることを嬉しく思っています.AdobeのビデオチュートリアルでFlexをチェックするようアドバイスしたいと思っています。 'のためにちょうどGoogleの周りの素晴らしい紹介される。 – shaunhusain