Adobe AIR HTML启动画面

时间:2014-01-30 10:20:38

标签: javascript jquery air adobe

我有一个用HTML / JavaScript构建的Adobe AIR应用程序。

XML如下:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/4.0">
    <id>examples.html.HelloWorld</id>
    <versionNumber>0.1</versionNumber>
    <filename>HelloWorld</filename>
    <initialWindow>
        <title>Hello World</title>
        <content>HelloWorld.html</content>
        <visible>false</visible>
        <minimizable>true</minimizable>
        <maximizable>false</maximizable>
        <resizable>false</resizable>
        <width>800</width>
        <height>600</height>
        <systemChrome>none</systemChrome>
        <transparent>true</transparent>
    </initialWindow>
</application>

我想要的是首先显示启动画面,然后在所有文件加载后显示主应用程序窗口等。

一个想法是让XML文件中的intialWindow成为实际的Web应用程序,但是默认使用visible false隐藏它然后添加:

$(document).ready(function(){

    // Create a new window that will become the splash screen
    var options = new air.NativeWindowInitOptions(); 
    options.systemChrome = air.NativeWindowSystemChrome.STANDARD; 
    options.transparent = false; 
    var newWindow = new air.NativeWindow(options);

// Add content to new window
var htmlView:HTMLLoader = new HTMLLoader(); 
htmlView.width = 300; 
htmlView.height = 500;  
newWindow.stage.align = "TL"; 
newWindow.stage.scaleMode = "noScale"; 
newWindow.stage.addChild( htmlView );
htmlView.load( new URLRequest('splash.html') );

    // Check for loading of app
    $(window).load(function(){

        // Hide splash
        window.nativeWindow.close();

        // Activate the initial Window
        window.nativeWindow.activate(); 

    }); 

});

我对这种方法的问题是:

  1. 如何为启动画面提供内容(我添加了一些代码来创建一个窗口并加载到splash.html页面中,但它目前因为我认为代码是ActionScript而不是JavaScript而中断)
  2. 关闭新的初始屏幕(如何选择要关闭的窗口)
  3. 在加载时显示正确的初始屏幕(如何选择正确的窗口)
  4. 我开始时:

    $(window).load(function () {
    
        loaded = true;
    
    });
    
    function appLoaded()
    {
        if(loaded)
        {
            // Hide splash
            window.nativeWindow.close();
    
    
            // Activate the initial Window
            window.nativeWindow.activate();
        }
        else
        {
            appLoaded(); // keep checking until the loaded becomes true
        }
    }
    

    上述代码的一个问题是appLoaded函数可以运行数百次。有什么建议来解决这个问题因为我想确保一旦应用程序加载并且出现了闪现,它就会隐藏起来。

1 个答案:

答案 0 :(得分:1)

我做了类似的事情,但采用了另一种方法:

  • 我没有为启动画面打开第二个窗口,而是将启动画面的内容放在index.html内的div中,并将其放在实际内容之前。
  • 我将初始宽度和高度设置为闪屏测量。
  • 应用程序完全加载后,我从DOM中删除了启动画面div,并将宽度和高度设置为应用程序度量。

<强>更新

如何为启动画面提供内容(我添加了一些代码来创建一个窗口并加载到splash.html页面,但它目前因为我认为代码是ActionScript而不是JavaScript而中断)? / p>

第一:没有ActionScript。这是JavaScript,但你必须以正确的方式使用它。你错过了空气。它代表Air的库对象。

// Create a new window that will become the splash screen
var options = new air.NativeWindowInitOptions(); 
options.systemChrome = air.NativeWindowSystemChrome.STANDARD; 
options.transparent = false; 

// Add content to new window
var htmlLoader = air.HTMLLoader.createRootWindow(false, options, false);    
htmlLoader.window.nativeWindow.width = 300;
htmlLoader.window.nativeWindow.height = 500;
htmlLoader.window.nativeWindow.visible = true;
htmlLoader.load(new air.URLRequest('splash.html'));

关闭新的启动画面(如何选择要关闭的窗口)?

// That is your splash screen
htmlLoader.window.nativeWindow.close();

加载时显示正确的初始屏幕(如何选择正确的窗口)?

// This is your main window
window.nativeWindow.visible = true;