Как я могу создать приложение Flex с динамической высотой? - PullRequest
2 голосов
/ 25 ноября 2008

Есть ли способ, позволяющий гибкому приложению иметь динамическую высоту при встраивании в оболочку HTML?

Я хочу, чтобы приложение Flex увеличивалось по высоте таким образом, чтобы оно не вызывало вертикальные полосы прокрутки.

Ответы [ 5 ]

4 голосов
/ 23 мая 2009

Лучшим способом должно быть переопределение метода измерения в Приложении, например:

private var _lastMeasuredHeight:int;

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

Эта функция предполагает, что у вас есть функция javascript setFlashHeight, которая может принимать параметр высоты (или как вы его называете). Примером может быть:

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. При реализации этого решения вы заметите, что полосы прокрутки не работают, так как flash использует событие. Но это другая тема ...

3 голосов
/ 26 ноября 2008

Это возможно. Например, см. Новый Kontain от fi. Вы можете увидеть это непосредственно в действии, создав новый пост в блоге и добавив строки в поле ввода. По мере увеличения размера поля ввода страница становится выше.

Вам придется координировать между Flash и Javascript через ExternalInterface. Когда вашему приложению Flex необходимо изменить размер, найдите новый размер (возможно, покопавшись в механизме компоновки Flex) и добавьте его в функцию Javascript через ExternalInterface. Затем javascript может установить новое свойство высоты для контейнера. Возможно, вы также захотите установить verticalScrollPolicy = "off" в своем теге, чтобы Flex не отображал полосы прокрутки при запуске механизма макета.

2 голосов
/ 26 ноября 2008

Я не уверен, что полностью понимаю вопрос. Вы пытаетесь заставить приложение иметь размер больше, чем порт просмотра браузера? Если это так, то, как прокомментировали @hasseg и @RickDT, вы можете установить для свойств HorizontalScrollPolicy и / или verticalScrollPolicy приложения значение «off»?

Если вы просто пытаетесь убедиться, что ваше приложение масштабируется с изменениями формы и размера браузера, то убедитесь, что вы установили следующее (или подходящие значения) в своем внешнем теге самого приложения.

percentWidth="100"
percentHeight="100"
0 голосов
/ 16 ноября 2010

Все это не нужно, просто измените приложение с spark на mx. это покажет это автоматически, потому что я думаю, что spark вообще не поддерживает это (я думаю, что это глупая ошибка от 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% "

0 голосов
/ 25 ноября 2008

К сожалению, нет, я думаю, что единственный способ сделать это - избавиться от HTML-оболочки. НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...