2014-01-30 52 views
0

我有一个内置HTML/JavaScript的Adobe AIR应用程序。Adob​​e AIR HTML初始屏幕

的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应用程序,但然后使用上可见的伪默认隐藏,然后添加:

$(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. 显示负载正确的初始画面(我该如何选择正确的窗口)

我已经开始与:

$(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

我没有类似的东西,但有另一种方法:

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

UPDATE

如何提供启动画面(我已经添加了一些代码来创建一个splash.html页面的窗口和负载,但它目前的假期,因为我的内容相信代码是ActionScript而不是JavaScript)?

第一:没有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; 
+0

很酷我也可以试试。但是为了学习经验,你能帮我修复我选择的方法吗?总之如何选择关闭哪个窗口并使之可见。以及使用JavaScript加载内容的正确代码是什么。谢谢。 – Cameron

+1

然后,请给我一份清单,列出您的申请需要处理的任务,换句话说,什么时候会发生什么事情。我很抱歉,但我无法从您的代码中获得它。 :) –

+0

XML文件通过将可见设置为false来隐藏初始窗口。 JavaScript代码应该创建一个新窗口并将splash.html内容添加到其中。一旦加载完成,使用jQuery'load()'它应该隐藏飞溅窗口,然后使主窗口可见。 – Cameron