Полностью масштабируемое приложение - Flex 4.5

Я хотел бы создать приложение с полностью изменяемым размером, используя Flex 4.5. Я уже экспериментировал, но мой подход, кажется, трудно поддерживать, поэтому он мне не нравится. Вот мой подход:

  1. Что касается HTML, у меня на самом деле есть первая страница, которая определяет разрешение монитора пользователя, а затем перенаправляет на HTML-код флэш-контейнера (JSP), который считывает параметры ширины и высоты и отображает флэш до переданного размера.
  2. В моем приложении я использовал 1280x720 в качестве эталонного размера, поэтому я создал служебный класс:

пакет утилит {импорт mx.collections.ArrayCollection; import mx.core.FlexGlobals; import mx.resources.ResourceManager; import mx.utils.ObjectProxy;

/**
 *
 * @author user
 *
 */
public final class LayoutUtils
{
    /**
     *
     *
     */
    public function LayoutUtils()
    {
        throw new Error("Boooohhhhhhhhhh");
    }

    public static function relativeToHeight(percentageValue:Number):Number
    {
        return percentageValue * FlexGlobals.topLevelApplication.height / 100; 
    }

    public static function relativeToWidth(percentageValue:Number):Number
    {
        return percentageValue * FlexGlobals.topLevelApplication.width / 100; 
    }
}

}

Я передаю процентное значение относительно высоты или ширины и возвращаюсь именно к нему. Поэтому я фактически привязываю высоту / ширину компонентов, например, к {LayoutUtils.relativeToWidth(50)}, который вернет 640, если ширина моего приложения будет 1280. Но это означает установку ширины и / или высоты почти для каждого компонента, и это включает также отступы и позиции привязки, что делает его беспорядок.

Есть ли у вас другие предложения? Я хочу, чтобы все было правильно изменено (включая шрифты). Все доступные размеры, которые я собираюсь иметь в наличии, будут иметь такое же соотношение сторон, которое будет, например, 16: 9, потому что я не вижу другого способа сделать это.

Какие-либо предложения?


person Timmo    schedule 27.06.2011    source источник
comment
Я не уверен, что вы хотите от Totally Resizable. По умолчанию размер Flex уже можно изменять, если размер HTML-контейнера также изменяется. Если вы не хотите, чтобы Flex масштабировался (что по умолчанию не выполняется).   -  person J_A_X    schedule 28.06.2011


Ответы (1)


Если вы хотите масштабировать что-либо, используйте scaleX и scaleY в контейнере приложения (спрайте) и установите

stage.scaleMode = StageScaleMode.SHOW_ALL;
person DanielB    schedule 27.06.2011
comment
Спасибо за ваш ответный ответ. Я еще не тестировал его, поэтому, если я включу код, который вы набрали там, в полный обработчик создания моего приложения, и я включу файл SWF в два разных файла html, один из которых определяет объект размером 1280x720, а другие 1600x900 все приложение (шрифты и тд) соответственно масштабируется? - person Timmo; 27.06.2011
comment
Да, попробуйте в проигрывателе отладки и измените размер окна. Тогда он должен масштабироваться. - person DanielB; 28.06.2011
comment
Мне также нужно будет изменить размер flash-объекта в браузере для горизонтального позиционирования по центру. Надеюсь, все будет хорошо. Еще раз спасибо! - person Timmo; 29.06.2011
comment
Вы можете взглянуть на StageAlign. - person DanielB; 29.06.2011