自从2008年发布了第一个版本,Adobe AIR已经走过了很长的一段路。在此期间,我们为AIR增加了几十个较大的特性,上百个较小的特性,性能优化和错误修复,并且我们支持3个额外的平台:iOS (iPhone和iPad),Android, 和Adobe AIR for TV.
AIR 3将是我们在不到两年半的时间里的第11个发行版本。虽然我们每次的发行版都代表了很大的进步,但我个人觉得这次是非比寻常的。AIR 3包括以下新的API和特性:
apk-captive-runtime变量,如果是构建桌面应用,则可以设置 bundle 变量。(注意在iOS上AIR一直使用一个捆绑的运行时,虽然其机制不太相同。)CameraRoll在技术上已经被iPad支持,但是我们在AIR 3中增加了很多更好的支持。在iPad上,图片选择器不再占用整个屏幕,在iPhone和iPod touch上也是如此。相反,它会在调用它的UI组件的相对位置上,出现一个浮动的面板。使用额外的 CameraRollBrowseOptions类,开发人员可以选择图像选择器的大小和位置,并指定调用它的UI组件的位置。欲了解更多信息和代码示例,请参阅我的博客文章, 如何正确使用iPad上的CameraRoll API 。StageVideo为TV带来了视频硬件加速;现在AIR 3则为移动设备也提供了 StageVideo。StageVideo(视频硬件加速)和 StageWebView (本地的HTML渲染)。AIR 3提供了 StageText 的API,它允许开发人员将系统原生的文本字段放置在移动应用程序中。虽然您仍然可以使用Flash文本字段,但是 StageText 文本字段可以使用所有操作系统底层支持的特性,比如放大镜,文本选择,自动更正等等。Camera 摄像头API可以访问iOS和Android设备的前置摄像头和后置摄像头(如果是Android设备,至少需要2.3的版本)。您可以使用新的 Camera.position 属性以及新CameraPosition类中的常量((BACK背部, FRONT正面, and UNKNOWN) )来确定摄像机的位置。欲了解更多信息和代码示例,请参阅我的博客文章, AIR 3前置摄像头支持 。EncryptedLocalStore 的API曾经只在桌面上可用,现在则进入了iOS和Android。这个API用于安全地存储用户凭据,加密密钥,私密信息,和类似的重要信息。SoundMixer audioPlaybackMode 属性,和新的 AudioPlaybackMode类中的常量 (MEDIA媒体和VOICE语音),开发人员可以控制是否是通过电话的听筒或扬声器播放音频。ProgressEvent.SOCKET_DATA来读取从网络传到ActionScript套接字缓冲区的数据,并确定有多少个字节可供读取 (Socket.bytesAvailable)。然而,事实尚非如此。换句话说,在AIR 3之前,没有办法知道有多少数据从ActionScript套接字成功地写入了网络的缓冲区,也不可能知道有多少数据正在等待被写入。这导致开发者不确定调用套接字的close()关闭是否是安全的,或知道当用户想关闭应用程序的时候,是否有一个网络进程还在处理中。通过AIR 3,开发人员可以使用 OutputProgressEvent.OUTPUT_PROGRESS 事件和Socket新属性 Socket.bytesPending ,以确定有多少数据被写入到网络,多少数据在ActionScript套接字中仍在等待写入。这些新的API可以帮助我们构建更强壮的依赖套接字网络访问的应用程序。欲了解更多信息和代码示例,请参阅我的博客文章, AIR 3中套接字的改进。Capabilities.hasMultiChannelAudio 属性,新的 AudioDecoder类(其中包含代表几个不同的多声道音频类型的常量),和 Capabilities.serverString 属性,都可以让开发者来检测设备的多声道音频功能,并从ActionScript中通过RTMP协议输出正确的音频比特流。GameInput ,开发人员可以构建基于高级电视控制器的游戏。一些新的API允许枚举设备(可用控制器),枚举设备的控制功能(按钮,触发器,加速度等),并从设备中得到控制值。DisplayObjectContainer现在已经具备了 removeChildren() 函数,它可以只用一个方法删除所有的子元件。这当然比下面的操作更有效:while (this.numChildren > 0) this.removeChildAt(0)isPlaying 属性,可以很容易判断一个MovieClip电影剪辑是否在播放。System.pauseForGCIfCollectionImminent 功能,可以让AIR开发人员更好地控制运行时的自动垃圾回收机制。由于垃圾回收有可能造成动画或音频的暂停,开发者可以在用户难以察觉的时候,使用这个方法鼓励垃圾回收。Math.random 方法可用,返回 "伪随机" 的数字,也就是说,这似乎是随机的,但总是包含一些非随机性(比如时间戳)的数字。AIR 3提供了一个用于生成随机数的新方法,称为 generateRandomBytes() l,位于flash.crypto包。由于 generateRandomBytes() 函数使用操作系统API来产生随机数(在Windows上是 CryptGenRandom ,在OSX上是 /dev/random, 在Android上是 /dev/urandom , 在iOS上则是 SecRandomCopyBytes ,由此产生的随机数更有效,更安全。cubicCurveTo() 方法是 Graphics 类的功能,允许您以编程方式绘制三次贝塞尔曲线,而且不使用第三方ActionScript代码/li>Be sure to grab the latest version of the AIR runtime and SDK and let us know what you think!
For more details on the changes in AIR 3, refer to the release notes.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Tutorials and samples |
AIR blogs |
More |
AIR Cookbooks |
More |