Adobe AIR 窗口基础
Adobe AIR的窗口API包含下列的类。
| Package | Classes |
| flash.display |
NativeWindow, NativeWindowInitOptions 用下列类定义的窗口字串常量: NativeWindowDisplayState, NativeWindowResize, NativeWindowSystemChrome |
| flash.events | NativeWindowBoundsEvent, NativeWindowDisplayStateEvent, NativeWindowErrorEvent |
| flash.system | NativeWindowCapabilities |
Adobe AIR提供一个容易使用的,跨平台的窗口API,用于建立本地操作系统窗口,可以使用flash,Flex,和HTML编程技术去创建。
使用AIR,你有很大的空间开发外观感觉很好的应用程序。你可以创建看起来和标准桌面应用程序一样的窗口,当运行在MAC系统下时匹配苹果的风格,在Windows系统下运行时与微软的风格保持一致。你也可以使用皮肤,扩展flex框架提供的风格(chrome不知该如何翻译,有知道的提醒一下,谢谢!),而建立你自己的窗口风格。你甚至能用矢量图或位图画你自己的艺术化的窗口,同时AIR完全支持透明和与桌面的alpha混合。矩形窗口太普遍了吧,画个圆的玩玩。
AIR支持两种截然不同的窗口工作APIs:flash导向的本地窗口类(NativeWindow)和HTML导向的JavaScript窗口类。使用flash场景直接用NativeWindow类创建窗口和显示列表。去加入视觉对象到本地窗口,你加入对象到窗口场景的显示列表。用javascript创建的窗口使用html、css和javscript显示内容。要加入视觉对象到html窗口,你要加入内容到DOM。(翻译的别扭附上原文AIR supports two distinct APIs for working with windows: the Flash-oriented NativeWindow class and the HTML-oriented JavaScript Window class. Windows created directly with the NativeWindow class use the Flash stage and display list. To add a visual object to a NativeWindow, you add the object to the display list of the window’s stage. Windows created with JavaScript use HTML, CSS, and JavaScript to display content. To add a visual object to an HTML window, you add that content to the DOM (using any common browser-related technique). )
注意:HTML窗口是一个特殊的本地窗口类型。AIR主机附加一个本地窗口属性给HTML窗口,就是提供访问本地窗口实例下的入口。(好像翻译不准确附带原文Note: HTML windows are a special category of NativeWindow. The AIR host adds a nativeWindow property to HTML windows that provides access to the underlying NativeWindow instance. )
被你的应用程序自动创建的第一个窗口,基于AIR的应用程序描述文件在rootContent元素详细说明的参数指定。如果根内容是一个SWF文件,一个本地窗口被建立并且这个SWF文件被载入窗口。如果根内容是一个html文件,那么一个HTML窗口被创建,并且这个HTML页被载入。
本地窗口使用一个基于事件的程序模式。在窗口对象里改变一些属性或者调用方法,可以影像应用程序显示或行为,原因是,应用程序组件发布事件通知,感兴趣的组件能够监听到事件。例如,当系统最大化按钮被用户点击,下列是事件会发生的顺序:
1.用户点击最大化按钮。
2.一个显示状态改变(displayStateChanging)事件被发送到窗口。
3.如果没有被注册的监听者取消这个事件,那么这个窗口就会最大化
4.一个显示状态改变(displayStateChanging)事件被窗口发布通知给监听者,告诉它这个改变已经发生了。
5.一个移动(move)事件被发送到顶端,窗口左角因为最大化操作被移动。(原文不知到是否这样翻译有点怪A move event is dispatched if the top, left corner of the window moved because of the maximize operation. )
6.一个改变大小(resize)的事件被发送,窗口的大小因极大化操作被改变。
窗口最小化,还原,关闭,移动,和改变大小事件顺序也是类似的。
关于窗口API类,方法,属性,和事件的详细描述,参看 AIR ActionScript 3.0 Language Reference (http://www.adobe.com/go/learn_flex3_aslr). 关于使用Flash显示列表的一般信息, 看 “Display Programming” 部分在 Programming ActionScript 3.0 (http://www.adobe.com/go/programmingAS3) 参考里.
