skip to main |skip to sidebar

2007-04-22

打开新的Apollo窗口的方法

要从Apollo程序打开新的窗口,需要生成NativeWindow或它的子类的实例。下面为NativeWindow的构造函数:

Code:
public function NativeWindow(visible:Boolean, initOptions:NativeWindowInitOptions)

NativeWindow的构造函数有2个参数。

第一个参数是窗口制作的时候是否显示。 制作的窗口在表示位置和大小等有可能会有修改。如果修改时窗口在表示了的状态下进行的话这些的处理的途中的阶段也会在画面上表示了。所以最好是首先将visible = false (不显示),必要的修改结束了再 让 visible = true 来显示窗口。

同样,如果不想在Apollo程序启动的时候 显示画面,可以把 程序配置文件(程序-app.xml)里的rootContent标签的visible改为false。再在修改完后再 让 visible = true 来显示窗口。

第二个参数是指定窗口初始化所使用的选项的 NativeWindowInitOptions。NativeWindowInitOptions的定义为:

Code:
systemChrome:String // 窗口使用的系统chrome的种类
transparent:Boolean // 窗口是否能够透明
resizable:Boolean // 是否能改变窗口的大小
maximizable:Boolean // 是否能最大化能窗口
minimizable:Boolean // 是否能最小化能窗口

各自的属性的初始值如下。

Code:
systemChrome = NativeWindowSystemChrome.STANDARD;
transparent = false;
resizable = true;
maximizable = true;
minimizable = true;

systemChrome 能采用的值是在 NativeWindowSystemChrome里定义的。现在的Alpha版只能使用以下的 2种。

Code:
public static const STANDARD:String // 使用标准OS的Chrome
public static const NONE:String // 不使用标准OS的Chrome

如果把NativeWindowSystemChrome.指定为NONE,就没有chrome,也就是说只表示框框内侧的窗口。

以下为打开新的Apollo窗口函数的例子。
Code:Actionscript
public function createNewWindow():void {
// 作成窗口初始化选项
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
// 在这里按照必要设定选项

// 窗口的作成
var newWindow:NativeWindow = new NativeWindow(false,options);

// 在这里对窗口进行必要的处理

// 让窗口显示
newWindow.visible = true;
}

owner 属性

NativeWindowInitOptions 里有一个 owner 的属性。能指定新的Apollo窗口的所有者(父窗口)。

如果新窗口指定了owner的话,新窗口一定会在自己的 owner 上面显示(会遮住)。即使焦点在owner 窗口上,彼此的重叠顺序也不会变化。

同时,owner 窗口在关闭时,在 owner 里(上)的那个新窗口也全部会关闭。

下的例子是:最初启动的窗口为程序启动后有的窗口的 owner 。所以,关闭最初启动的窗口的话几个开着的窗口也全部会关闭,程序也会结束。

Code:MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:ApolloApplication xmlns:mx="http://www.adobe.com/2006/mxml" width="350" height="200">
<mx:Script>

<![CDATA[
public function createNewWindow():void {
// 作成窗口初始化选项
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
options.owner = stage.window;

// 作成窗口
var newWindow:NativeWindow = new NativeWindow(false,options);
newWindow.width = 400;
newWindow.height = 300;

// 在窗口里追加text field
newWindow.stage.align = StageAlign.TOP_LEFT;
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
var tf:TextField = new TextField();
tf.width = newWindow.width;
tf.text = "这是空窗口";
newWindow.stage.addChild(tf);

// 让窗口显示
newWindow.visible = true;
}
]]>
</mx:Script>
<mx:Button label="打开窗口" click="createNewWindow();"/>
</mx:ApolloApplication>

注意,作为Alpha版的限制 ,Flex的组件不能添加。这个例子使用的是text field。

没有评论: