С помощью 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