Adobe AIR - пользовательский предварительный загрузчик с изображением - PullRequest
2 голосов
/ 27 октября 2011

Народ,

Я разработал приложение Adobe AIR.Я хочу показать preloader на нем, прежде чем он откроется.

Может кто-нибудь подсказать мне учебники по preloader , предназначенные специально для AIR или любой другойуже встроенные?

Спасибо

Ответы [ 3 ]

6 голосов
/ 27 октября 2011

С помощью AIR я могу придумать несколько способов добиться этого:

1. с родными окнами

Установите атрибут «visible» вашего основного WindowedApplication на «false». При событии creationComplete появляется новое окно, в котором находится заставка. Выполните необходимую логику, прежде чем показывать приложение. После завершения начальной загрузки закройте заставку и установите для «видимого» основного приложения значение «true».

2. в одном окне, используя состояния

Создать 2 состояния (например, «загрузка» и «нормальный»). Установите для атрибута currentState вашего основного WindowedApplication значение «loading». В этом состоянии отобразите ваш заставки. Выполните необходимую логику, прежде чем показывать приложение. Когда начальная загрузка завершена, установите атрибут currentState в значение normal. В «нормальном» состоянии отобразите ваше фактическое приложение.

3. прозрачное приложение

С прозрачным приложением AIR вы можете работать с состояниями (как в n ° 2) и поддельными окнами. Тогда вашим основным приложением будет прозрачное окно, которое покрывает весь экран. Теперь вы можете расположить заставку и главный экран в любом месте этого прозрачного окна. Не беспокойтесь: вы можете нажимать через прозрачные окна, чтобы ничто не блокировалось.

Я мог бы показать вам некоторый код, но мне нужна более конкретная информация о вашем приложении.

Редактировать: пример

Самым простым решением будет номер 2:

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:v="net.riastar.view"
                       currentState="loading"
                       creationComplete="boot()">

    <fx:Script>
        <![CDATA[
            private function boot():void {
                var bootstrap:Bootstrap = new Bootstrap();
                bootstrap.addEventListener(Event.COMPLETE, showApp);
                bootstrap.boot();
            }

            private function showApp(event:Event):void {
                currentState = 'normal';
            }
        ]]>
    </fx:Script>

    <s:states>
        <s:State name="loading" />
        <s:State name="normal" />
    </s:states> 

    <s:Image source="@Embed('splash.jpg')" includeIn="loading" />
    <v:MainView includeIn="normal" />

</s:WindowedApplication>

пример с windows

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:v="net.riastar.view" 
                       creationComplete="showSplash()" 
                       visible="false">

    <fx:Script>
        <![CDATA[
            import mx.events.AIREvent;
            import spark.components.Window;

            private var splash:Window;

            private function showSplash():void {
                splash = new SplashWindow();
                splash.systemChrome = "none";
                splash.type = NativeWindowType.LIGHTWEIGHT;
                splash.addEventListener(AIREvent.WINDOW_COMPLETE, boot);
                splash.open();
            }

            private function boot(event:AIREvent):void {
                var bootstrap:Bootstrap = new Bootstrap();
                bootstrap.addEventListener(Event.COMPLETE, showApp);
                bootstrap.boot();
            }

            private function showApp(event:Event):void {
                callLater(splash.close);

                var mainWin:Window = new MainApplicationWindow();
                mainWin.open();
            }
        ]]>

    </fx:Script>

</s:WindowedApplication>

Это требует более подробного объяснения: в вашем приложении вам нужно установить 'systemchrome' на 'none', 'visible' на 'false' и 'transparent' tot 'true'. Вы также должны установить атрибут «visible» на «false». Эти настройки будут эффективно скрывать главное окно приложения. Затем мы последовательно создаем окно для заставки и одно для основного экрана. Важно, чтобы основное WindowedApplication оставалось невидимым, потому что другой подход сделал бы это окно на короткое время видимым, прежде чем появится заставка (кажется, ошибка).

2 голосов
/ 28 октября 2011

То, что вы имеете в виду, это заставка

Неофициальный:

Официальный:

Однако я не верю, что есть ловушки, которые позволят вам в реальном времени отображать прогресс загрузки вашего приложения.

Вы можете попытаться смоделировать это, добавив SWF-файл, который имеет (смоделированный) индикатор выполнения, показывающий, что вы имитируете прогресс.

1 голос
/ 29 октября 2011

Если это мобильное приложение и вам нужен только заставка:

Внутри файла mxml основного приложения вставьте:

    splashScreenImage="@Embed('MyImage.png')"
    splashScreenScaleMode="zoom"          // optional - display type
    splashScreenMinimumDisplayTime="2000" //optional - display duration

в блок ViewNavigatorApplication.

Проверьте спецификации:

http://opensource.adobe.com/wiki/display/flexsdk/Mobile+Splash+Screen

...