#actionscript-3 #apache-flex #air #splash-screen
#actionscript-3 #apache-гибкий #air #заставка
Вопрос:
У меня готово мое приложение AIR, то есть MyAIRApplication. Я пытаюсь создать для него заставку. Вот мой код на данный момент..
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="showSplash()"
visible="false"
layout="absolute"
showFlexChrome="false">
<mx:Script>
<![CDATA[
import components.Splash;
import mx.core.Window;
import mx.controls.Alert;
import mx.events.AIREvent;
private var splash:Window;
private var splashTimer:Timer;
private function showSplash():void {
splash = new Splash();
splash.systemChrome = "none";
splash.transparent = true;
splash.type = NativeWindowType.LIGHTWEIGHT;
splash.addEventListener(AIREvent.WINDOW_COMPLETE, boot);
splash.open();
}
private function boot(event:AIREvent):void {
splashTimer = new Timer(3000, 2);
splashTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showApp);
splashTimer.start();
this.removeEventListener(AIREvent.WINDOW_COMPLETE, boot);
}
private function showApp(event:Event):void {
splash.close();
splash = null;
splashTimer.stop();
splashTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, showApp);
splashTimer = null;
// My Application .. where I wrote all components
var mainWin:WindowedApplication = new MyAIRApplication();
mainWin.activate();
mainWin.visible = true;
}
]]>
</mx:Script>
</mx:WindowedApplication>
Splash.mxml :
<?xml version="1.0" encoding="utf-8"?>
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300"
showFlexChrome="false" >
<mx:Image x="0" y="0" width="600" height="400" source="@Embed('../images/splash-bg.png')" scaleContent="false"/>
</mx:Window>
Но я сталкиваюсь с 2 проблемами :
- Мое приложение AIR (т. Е. MyAIRApplication) не отображается при завершении экрана-заставки.
- Моя заставка всегда отображается в верхнем левом углу
Может кто-нибудь, пожалуйста, предоставить мне решение?
Ответ №1:
var mainWin:WindowedApplication = new MyAIRApplication();
WindowedApplication создается не так. У вас уже есть один при запуске вашего приложения, используйте его. Просто сделайте его содержимое скрытым, чтобы оно отображалось после заставки.
Также я не уверен, что закрытие окна заставки с помощью splash.close()
вызовет событие WINDOW_COMPLETE, проверьте это также с помощью trace
(перезаписать в событие.При необходимости ЗАКРОЙТЕ.)
- Окна по умолчанию не центрированы. Получите размер экрана с помощью
Capabilities.screenResolutionX/Y
, вычислите x / y для окна по центру и вызовитеsplash.move(x, y)
.
Ответ №2:
Это также может иметь какое-то отношение к тому, что вы приводите свой параметр splash в качестве окна ввода,
private var splash:Window;
Но затем создаю его как новую заставку
private function showSplash():void {
splash = new Splash();
Они оба должны быть либо Window, либо Splash.