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