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

Близкие,

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

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

Спасибо


person Saurabh Gokhale    schedule 27.10.2011    source источник
comment
Вам вряд ли понадобится предварительный загрузчик, поскольку в приложении AIR фреймворк загружается почти мгновенно. Если в вашем приложении есть другие вещи, которых вам нужно подождать, вы можете просто использовать какой-то индикатор выполнения.   -  person RIAstar    schedule 27.10.2011
comment
Как показать этот предварительный загрузчик и изображение в открывающемся окне для AIR?   -  person Saurabh Gokhale    schedule 27.10.2011
comment
-1, поскольку это тот же вопрос, что и stackoverflow.com / questions / 7927028 /   -  person Dennis Jaamann    schedule 31.10.2011
comment
Вежливый способ привлечь больше внимания к своим вопросам на Stack Overflow - это объявить вознаграждение. Спасибо.   -  person sarnold    schedule 02.11.2011


Ответы (3)


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

1. с собственными окнами

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

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

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

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

С помощью прозрачного приложения AIR вы можете работать с состояниями (как в № 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>

пример с окнами

<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 оставалось невидимым, потому что другой подход сделает это окно на короткое время видимым до того, как появится экран-заставка (кажется, это ошибка).

person RIAstar    schedule 27.10.2011
comment
Подойдет все, что находится между вариантами 1 и 2 .. Да, пожалуйста, я хочу увидеть код .. Вы можете мне это показать? - person Saurabh Gokhale; 27.10.2011

Вы имеете в виду заставку

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

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

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

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

person Dennis Jaamann    schedule 28.10.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

person SQLiteNoob    schedule 28.10.2011
comment
Что делать, если вы не используете mxml; например, чистый проект ActionScript? - person Nuthman; 06.05.2016
comment
Что ж, прошло уже почти 5 лет, но я бы посоветовал вам откопать документы Flex sdk на сайте Apache и найти соответствующий сценарий действий. - person SQLiteNoob; 06.05.2016