10.1 AIR窗体基础

AIR 窗体基础<o:p></o:p>

窗体API 包含下列类:<o:p></o:p>

Package

Classes

flash.display

NativeWindow, NativeWindowInitOptions 下面的类中定义了些Window字符常量:NativeWindowDisplayState, NativeWindowResize, NativeWindowSystemChrome

flash.events

NativeWindowBoundsEvent, NativeWindowDisplayStateEvent, NativeWindowErrorEvent

flash.system

NativeWindowCapabilities


 

AIR提供了易用的,跨平台的窗体API,使用Flash, Flex, 和HTML编程技术创建本地操作系统窗体。<o:p></o:p>

    用AIR,你可以很自由的创建应用程序的主题样式,创建的窗体看起来和标准桌面程序一样,在不同的操作系统上就有不同的系统窗体风格,或者使用皮肤,扩展窗体主题风格。你甚至可以用矢量图或位图绘制窗体。<o:p></o:p>

    AIR支持两种不同类型的APIs用于创建窗体:面向Flash的NativeWindow类和面向HTML的JavaScript Window类。通过Flash stage和显示列表可直接用NativeWindow创建窗体。要添加可视化对象到NativeWindow上,需要添加对象到window's stage的显示列表上。使用HTML,CSS和JavaScript创建窗体来显示内容,如果要添加可视化对象到HTML窗体上,需要用DOM添加对象。<o:p></o:p>

    以前的项目中的窗体都是通过AIR项目的描述文件自动创建的,因为已经指定了rootContent 元素属性值。如果根内容是一个SWF文件,则NativeWindow 被创建,SWF 被载入到窗体中。如果根内容为HTML文件,则HTML窗体被创建,HTML页被载入。<o:p></o:p>

Native windows使用基于事件驱动的编程模型。改变任何属性或调用窗体的方法都将影响显示或组件的行为。例如当系统按钮最大化按钮被点击时,下列事件将被触发:<o:p></o:p>

1. 用户点击了最大化按钮。<o:p></o:p>

2. 窗体发出一个displayStateChanging事件。<o:p></o:p>

3. 如果没有注册监听器取消事件,则窗体被最大化。<o:p></o:p>

4. displayStateChange事件通知监听器。<o:p></o:p>

另外,相关联的事件也会被触发:<o:p></o:p>

1. 如果窗体左上角坐标因为最大化而改变则发出move事件。<o:p></o:p>

2. 如果窗体大小因最大化发生变化则发出resize事件。<o:p></o:p>

类似的事件还有minimizing, restoring, closing, moving, resizing  window.<o:p></o:p>

<o:p></o:p>

本地窗体的样式<o:p></o:p>

窗体的基本外观和样式取决于三个属性:type, systemChrome, 和transparent。Type属性设置窗体的功能。systemChrome属性设置窗体是否遵循操作系统窗体样式。Transparent属性设置是否支持alpha混合。这些属性都是设置在将被创建的窗体的NativeWindowInitOptions 对象上且不能被改变。自动创建的初始窗体是根据描述文件的这些属性值进行设置的,且type属性不能在描述文件中设置,其值都是normal。<o:p></o:p>

这些属性的设置有些是不兼容的,如当transparent 设置为true时或type为lightweight时systemChrome不能设置为standard 。<o:p></o:p>

<o:p></o:p>

窗体类型<o:p></o:p>

 <o:p></o:p>

Type属性决定创建何种类型的窗体,且只有在创建新的NativeWindow.时可设置,AIR支持下列类型的窗体:<o:p></o:p>

Normal<o:p></o:p>

典型的窗体,Normal窗体具有操作系统普通窗体的功能。<o:p></o:p>

Utility<o:p></o:p>

一个面板窗体,Utility窗体是简化的窗体,且不显示在系统任务栏中。<o:p></o:p>

Lightweight<o:p></o:p>

Lightweight窗体也不显示在系统任务栏中,另外它没有系统菜单。它很适合做提示水泡窗体,当type设置为lightweight时,systemChrome 必须设置为"none".<o:p></o:p>

注意:在Beta版本中,模态窗体类型还不支持<o:p></o:p>

<o:p></o:p>

Window chrome<o:p></o:p>

 <o:p></o:p>

Window chrome 是一组操作窗体的控件,作为AIR 程序window chrome有一下几种:<o:p></o:p>

System chrome<o:p></o:p>

System chrome 显示的窗体具有操作系统窗体一样的一组控件和样式。使用system chrome是AIR窗体和普通桌面程序具有一样的样式风格System chrome是由系统管理的,你的程序不能直接访问这些控件,但可以处理这些控件发出的事件,如果窗体被设置为system chrome ,则transparency 属性必须为false 。<o:p></o:p>

<o:p></o:p>

Flex chrome<o:p></o:p>

当使用Flex WindowedApplication 和 Window组件时,窗体样式由Flex framework提供,如果Flex 组件在system chrome下使用,则Flex chrome 不会被显示。<o:p></o:p>

Custom chrome<o:p></o:p>

如果你创建的窗体没有system chrome且不使用Flex mx:WindowedApplication组件,你必须添加自己的控件处理用户和窗体的交互。这里你可以制作透明的,不规则的窗体。<o:p></o:p>

<o:p></o:p>

窗体透明<o:p></o:p>

 <o:p></o:p>

    要允许窗体与桌面环境进行alpha混合,需要设置窗体的transparent 属性为true。Transparent属性必须在窗体创建之前设置,且不能改变。该属性在NativeWindowInitOptions对象上。<o:p></o:p>

透明窗体在以下方面很有用:<o:p></o:p>

1. 程序边框为不规则图形<o:p></o:p>

2. 程序必须”淡出“或出现为不可视<o:p></o:p>

当窗体设置为system chrome.时透明不可用。<o:p></o:p>

<o:p></o:p>

MXML程序窗体的透明性<o:p></o:p>

 <o:p></o:p>

如果Flex程序使用CSS 样式设置背景色或颜色,则窗体不会透明。<o:p></o:p>

Application <o:p></o:p>

<o:p></o:p>

    background-image:""; <o:p></o:p>

    background-color:""; <o:p></o:p>

<o:p></o:p>

<o:p></o:p>

可视化窗体目录<o:p></o:p>

 下面的表格说明不同的属性值影响窗体的视觉效果:<o:p></o:p>


Type

System Chrome

Transparent

Mac OS X

Microsoft Windows

Standard

normal

Not supported

Utility

normal

Not supported

Any

none

false

Any

none

true

Any

none

true

mx:WindowedApplication

Beta版本的限制<o:p></o:p>

 <o:p></o:p>

下面的特性在beta版本中还不支持:<o:p></o:p>

1. 窗体API 还不支持 Toolbars|OS X Toolbar 或 OS X Proxy Icon. <o:p></o:p>

2. 系统托盘图标<o:p></o:p>

3. 程序控制应用程序图标<o:p></o:p>

4. 桌面屏幕信息<o:p></o:p>

5. 本地窗体菜单 <o:p></o:p>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值