借助 AIR,我可以想出几种方法来实现这一目标:
1. 使用本机窗口
将主 WindowedApplication 的“visible”属性设置为“false”。在“creationComplete”事件中,会生成一个包含启动屏幕的新窗口。在显示应用程序之前执行必要的逻辑。引导完成后,关闭启动屏幕并将主应用程序的“可见”设置为“true”。
2. 在一个窗口中,使用状态
创建 2 个状态(例如“正在加载”和“正常”)。将主 WindowedApplication 的“currentState”属性设置为“loading”。在此状态下显示您的启动屏幕。在显示应用程序之前执行必要的逻辑。引导完成后,将“currentState”属性设置为“正常”。在“正常”状态下显示您的实际应用程序。
3. 透明申请
通过透明的 AIR 应用程序,您可以使用状态(如 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”。这些设置将有效隐藏主应用程序窗口。然后,我们依次创建一个用于启动屏幕的窗口和一个用于主视图的窗口。重要的是,主 WindowedApplication 保持不可见,因为另一种方法会在启动屏幕显示之前使该窗口短暂可见(似乎是一个错误)。