Позиционирование предварительного загрузчика приложения Flex от 100% до 100% - PullRequest
1 голос
/ 17 апреля 2009

У меня проблема при попытке применить загрузочную анимацию к моему Flex-приложению - весь пользователь окна браузера. Я создаю подкласс класса DownloadProgressBar, как описано в статье Adobe об этом. stageHeight и stageWidth, сообщенные базовым классом, неверны. Он говорит 500x375 пикселей в конструкторе и 0x0 в другом месте. Почему?

Ответы [ 6 ]

2 голосов
/ 22 апреля 2009

У меня есть код для центрирования моего пользовательского загрузчика прогресса, и он отлично работает из этой статьи http://askmeflash.com/article_m.php?p=article&id=7

1 голос
/ 27 октября 2009

Вы решили эту проблему? У меня та же проблема с моим приложением flex. Сцена возвращается 500х375. Мой обходной путь не симпатичен. Эта функция вызывается в FlexEvent.INIT_PROGRESS. Поэтому, когда мое приложение доступно, я использую его реквизиты.

private function onFlexInitProgress( event:FlexEvent ):void {
    if (Application.application != null){
        var appWidth:Number = Application.application.width;
        var appHeight:Number = Application.application.height;
        x = (appWidth * 0.5) - (preloaderSWF.width * 0.5);
        y = (appHeight * 0.5);
        preloaderSWF.visible = true;
    }
}
0 голосов
/ 28 сентября 2012

У меня была такая же проблема в проекте ActionScript во Flash Builder, использующем ширину и высоту от 100% до 100%. Я заметил, что stage.stageWidth и stage.stageHeight были 500x375, пока после того, как preloader загрузил основной класс, он изменился бы на полный экран. Из-за этого расположение элементов в прелоадере было неправильным. Я обнаружил, что именно эта строка в моем основном классе обновляет размер сцены:

stage.scaleMode = StageScaleMode.NO_SCALE;

Вот как я реализовал это в моем прелоадере:

public function Preloader()
    {
        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    }

    private function onAddedToStage(event:Event):void {
        removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        stage.scaleMode=StageScaleMode.NO_SCALE;
        stage.align=StageAlign.TOP_LEFT;
        ...
    }
0 голосов
/ 18 апреля 2009

Что вы хотите сделать, это добавить прослушиватель событий на сцену для события resize и соответствующим образом изменить размер вашего предварительного загрузчика. В противном случае, если кто-то изменит размер вашего приложения Flex во время отображения предварительного загрузчика, он не изменит свой размер.

stage.addEventListener(Event.RESIZE, onStageResize);

public function onStageResize(e : Event) : void {
    this.width = stage.stageWidth;
    this.height = stage.stageHeight;
}

Или же вы можете центрировать ваш предварительный загрузчик на сцене, используя такой код:

preloader.x = this.stage.stageWidth/2 - preloader.width/2;
0 голосов
/ 18 апреля 2009

Измерение ширины / высоты 0x0 часто указывает на то, что рассматриваемый компонент не был полностью выложен во время чтения (включая дочерние компоненты). Проверка измерений в конструкторе, безусловно, слишком рано. Вы захотите проверить измерения после того, как вы установили сцену в полноэкранный режим, и все, что вы отображаете, было размещено, вероятно, на событии creationComplete для приложений, возможно, даже позже. Следующая ссылка должна быть хорошим ресурсом:

http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/

0 голосов
/ 17 апреля 2009

Я не уверен, поможет ли это, но я думаю, что можно ссылаться на размер приложения Flex с помощью Application.width, Application.height.

http://livedocs.adobe.com/flex/3/html/help.html?content=app_container_2.html

Представленные ниже проблемы, похоже, связаны с вашей проблемой:

http://www.nabble.com/Stupid-Question---Flex-width-and-height-td21423345.html

http://www.nabble.com/Flex-stage-size-td20167125.html

http://dreamweaverforum.info/flex/125327-referencing-stage-flex.html

Надеюсь, они помогут.

...