Приложение AIR

#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 проблемами :

  1. Мое приложение AIR (т. Е. MyAIRApplication) не отображается при завершении экрана-заставки.
  2. Моя заставка всегда отображается в верхнем левом углу

Может кто-нибудь, пожалуйста, предоставить мне решение?

Ответ №1:

  1. var mainWin:WindowedApplication = new MyAIRApplication();

WindowedApplication создается не так. У вас уже есть один при запуске вашего приложения, используйте его. Просто сделайте его содержимое скрытым, чтобы оно отображалось после заставки.
Также я не уверен, что закрытие окна заставки с помощью splash.close() вызовет событие WINDOW_COMPLETE, проверьте это также с помощью trace (перезаписать в событие.При необходимости ЗАКРОЙТЕ.)

  1. Окна по умолчанию не центрированы. Получите размер экрана с помощью Capabilities.screenResolutionX/Y , вычислите x / y для окна по центру и вызовите splash.move(x, y) .

Ответ №2:

Это также может иметь какое-то отношение к тому, что вы приводите свой параметр splash в качестве окна ввода,

 private var splash:Window;
  

Но затем создаю его как новую заставку

 private function showSplash():void {
                splash = new Splash();
  

Они оба должны быть либо Window, либо Splash.