Flash AdobeAIR-带图像的自定义预加载程序

Flash AdobeAIR-带图像的自定义预加载程序,flash,actionscript-3,apache-flex,air,preload,Flash,Actionscript 3,Apache Flex,Air,Preload,各位 我设计了一个adobeair应用程序。在它打开之前,我想在上面显示一些预加载程序 有没有人能为我提供专门针对AIR的预加载教程或任何内置教程 感谢AIR,我可以想出几种方法来实现这一目标: 1。使用本机windows <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"

各位

我设计了一个
adobeair
应用程序。在它打开之前,我想在上面显示一些
预加载程序

有没有人能为我提供专门针对AIR的
预加载
教程或任何内置教程


感谢AIR,我可以想出几种方法来实现这一目标:

1。使用本机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>
将主窗口应用程序的“可见”属性设置为“false”。在“creationComplete”事件中,生成一个包含初始屏幕的新窗口。在显示应用程序之前执行必要的逻辑。引导完成后,关闭启动屏幕并将主应用程序的“可见”设置为“真”

2。在一个窗口中,使用状态

<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>
创建两种状态(例如“加载”和“正常”)。将主窗口应用程序的“currentState”属性设置为“loading”。在此状态下,显示启动屏幕。在显示应用程序之前执行必要的逻辑。引导完成后,将“currentState”属性设置为“normal”。在“正常”状态下,显示实际应用程序

3。透明应用程序

使用透明空气应用程序,您可以处理状态(如n°2)和假窗口。然后,您的主应用程序将是一个覆盖整个屏幕的透明窗口。现在,您可以将启动屏幕和主视图放置在该透明窗口内您希望的任何位置。别担心:你可以点击透明的窗口,这样就不会有任何东西被阻挡

我可以向您展示一些代码,但我需要有关您的应用程序的更多具体信息

编辑:示例

最简单的解决方案是nr 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”设置为“true”。您还必须将“visible”属性设置为“false”。这些设置将有效地隐藏主应用程序窗口。然后,我们依次为初始屏幕和主视图创建一个窗口。主窗口应用程序保持不可见很重要,因为另一种方法会在启动屏幕出现之前使该窗口短暂可见(似乎是一个bug)。

您的意思是启动屏幕

非正式:

官员:

但是,我不相信有钩子可以让您显示应用程序负载状态的实时进度


您可以尝试通过嵌入一个swf来模拟这一点,该swf有一个(模拟的)进度条,显示您的假进度。

如果这是一个移动应用程序,您只需要一个启动屏幕:

在主应用程序的mxml文件中,插入:

    splashScreenImage="@Embed('MyImage.png')"
    splashScreenScaleMode="zoom"          // optional - display type
    splashScreenMinimumDisplayTime="2000" //optional - display duration
进入ViewNavigatorApplication块

检查规格:


您几乎不需要预加载程序,因为在AIR应用程序中,框架几乎会立即加载。如果你的应用程序中还有其他东西需要等待,你可以简单地使用某种进度条。如何在“打开”的窗口中显示预加载程序和图像以供播放?-1因为这与提高堆栈溢出问题可见性的礼貌方式是相同的问题。谢谢。选项1和选项2之间的任何东西都可以。是的,我想看看代码。。你能给我看看吗?如果你不使用mxml怎么办;比如一个纯actionscript项目?好吧,已经快5年了,但我建议你在它的Apache站点上挖掘FlexSDK文档,并寻找相应的actionscript