簡體   English   中英

如何創建具有動態高度的Flex應用程序?

[英]How can I create a Flex application with dynamic height?

有沒有辦法允許flex應用程序嵌入HTML包裝器時具有動態高度?

我希望Flex應用程序的高度增長,不會導致垂直滾動條。

最好的方法應該是覆蓋Application的度量方法,如:

private var _lastMeasuredHeight:int;

override protected function measure():void
{
    super.measure();
    if (measuredHeight != _lastMeasuredHeight)
    {
        _lastMeasuredHeight = measuredHeight;
        if (ExternalInterface.available)
        {
            ExternalInterface.call("setFlashHeight", measuredHeight);
        }
    }
}

此函數假定您有一個名為setFlashHeight的javascript函數,它可以接受高度(或任何您命名的)參數。 一個例子是:

function setFlashHeight(newHeight){
    //assuming flashDiv is the name of the div contains flex app.
    var flashContentHolderDiv = document.getElementById('flashDiv'); 
    flashContentHolderDiv.style.height = newHeight;
}

我使用swfobject來嵌入我的flex應用程序。 所以flash對象駐留在div中。 如果不是; 可以很容易地改變js函數來設置flash對象的高度。 當您實現此解決方案時,您會注意到滾動條不起作用,因為閃存消耗該事件。 但這是另一個主題......

這個有可能。 例如,請參閱新的Kontain by fi。 您可以通過創建新的博客帖子並在輸入字段中添加行來直接查看它。 隨着輸入字段的大小增加,頁面變得更高。

您必須通過ExternalInterface在Flash和Javascript之間進行協調。 當您的Flex應用程序需要更改大小時,找到新的大小(可能通過挖掘Flex的布局引擎)並通過ExternalInterface將其拋出到Javascript函數。 然后javascript可以在容器上設置新的height屬性。 您可能還需要在標記上設置verticalScrollPolicy =“off”,以便Flex在布局引擎運行時不顯示滾動條。

我不確定我是否完全理解這個問題,您是否試圖讓應用程序的大小大於瀏覽器的視圖端口? 如果是這樣,那么就像@hasseg評論和@RickDT提到的那樣,你可以將Application的horizo​​ntalScrollPolicy和/或verticalScrollPolicy屬性設置為“off”嗎?

如果您只是想確保應用程序隨瀏覽器的形狀和大小的變化而變化,那么請確保在最外層的應用程序標記中設置以下(或適合的值)。

percentWidth="100"
percentHeight="100"

不幸的是,我認為你能做到這一點的唯一方法就是首先擺脫html包裝器。 HTH。

沒有必要,只需將應用程序從spark更改為mx即可。 這將自動顯示,因為我認為火花根本不支持(我認為這是adobe的愚蠢錯誤)

像這樣:

<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" >

</mx:Application>

代替:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" >

</s:Application>

保留沒有高度規格的應用標簽“不要使用高度=”100%“

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM