[英]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的horizontalScrollPolicy和/或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.