现在的位置: 首页 > 综合 > 正文

【Adobe AIR学习笔记】Adobe AIR 3新特性

2013年11月24日 ⁄ 综合 ⁄ 共 4171字 ⁄ 字号 评论关闭
  • Stage3D 桌面特性)。Stage3D是一个底层的,具备硬件加速的二维和三维渲染的API。对于AIR 3,目前这些API只能在AIR的桌面版本中使用,然而,未来这些特性也将进入移动设备。Stage3D是一个非常重要的特性,它的意义之大让我们感到言语都难以描述,您可以从这里得到更加详细的信息, 请参阅 Stage
    3D 
    页面。
  • 本地扩展 (所有平台)。这又是一个重要的特性。从AIR 3的版本开始,开发者可以通过绑定本地扩展和应用程序,来增强AIR运行时的功能,然后他们就可以在ActionScript中调用那些扩展(这个特性原先只在Adobe AIR 2.5 for TV中存在,但是基于AIR 3,这个特性在所有的平台可用)。您可以认为Adobe AIR本地扩展(简称ANEs)就是ActionScript库(SWCs),只不过是包含了本机代码实现。ANEs的适用场合,包括让您的应用程序访问 AIR所不支持的原生API(见下面的例子),并授权在某些情况下访问本机代码,以达到更好的性能。关于更多AIR
    3本地扩展的信息,请参阅奥利弗.高盛的这篇文章: 扩展Adobe AIR 。
  • Android Market的授权集成 (显然只支持Android)。使用ANE文件,开发人员可以访问Android Market的授权服务,让发布者执行许可政策。这是一个能体现ANE强大特性的很好的例子:因为这个特性(授权服务)在iOS中是不可用的,所以我们不会把它作为AIR的直接支持的功能;但是,ANE可以保证我们运行于Android设备的AIR应用可以很轻松的访问这些API。
  • 运行时捆绑(Android和桌面)。在之前的版本中,需要您的最终用户在安装您的应用之前,已经安装了AIR的运行时(如果没有,则必须先安装AIR运行时),如果您想改变这个过程(让您的应用程序安装过程和其它本地安装的应用程序没有区别),或者您是想控制您的应用程序运行所需的AIR版本,AIR 3允许您捆绑AIR运行时和您的应用程序。捆绑运行时非常容易,当您构建一个Android应用时可以设置 apk-captive-runtime变量,如果是构建桌面应用,则可以设置 bundle 变量。(注意在iOS上AIR一直使用一个捆绑的运行时,虽然其机制不太相同。)
  • 背景音频播放(对于iOS是新特性;在Android上之前就被支持了)。由于iOS独特的多任务模式,在之前如果我们想在AIR应用处于非活动状态的时候继续播放音频,是不可能的。在AIR 3中,您所需要做的只是修改您的应用程序描述文件,声明您需要播放背景音乐,然后它会自动工作。(基本上,当应用程序被放置到后台程序中,它将继续运行。但是,所有的屏幕更新将被禁用,以保持电池寿命,并符合iOS的多任务要求。)
  • 在iPad对CameraRoll的支持。虽然 CameraRoll在技术上已经被iPad支持,但是我们在AIR 3中增加了很多更好的支持。在iPad上,图片选择器不再占用整个屏幕,在iPhone和iPod
    touch上也是如此。相反,它会在调用它的UI组件的相对位置上,出现一个浮动的面板。使用额外的 CameraRollBrowseOptions类,开发人员可以选择图像选择器的大小和位置,并指定调用它的UI组件的位置。欲了解更多信息和代码示例,请参阅我的博客文章, 如何正确使用iPad上的CameraRoll
    API 
  • 视频硬件加速(移动设备):AIR 2.5通过 StageVideo为TV带来了视频硬件加速;现在AIR 3则为移动设备也提供了 StageVideo
  • 本机文本字段移动设备) 。之前版本的AIR提供给开发者访问底层渲染的能力,比如 StageVideo(视频硬件加速)和 StageWebView (本地的HTML渲染)。AIR
    3提供了 StageText 的API,它允许开发人员将系统原生的文本字段放置在移动应用程序中。虽然您仍然可以使用Flash文本字段,但是 StageText 文本字段可以使用所有操作系统底层支持的特性,比如放大镜,文本选择,自动更正等等。
  • 前置摄像头支持 (iOS和Android)。现在ActionScript的 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语音),开发人员可以控制是否是通过电话的听筒或扬声器播放音频。
  • 原生JSON支持 (移动和台式机)。原先只能使用ActionScript来解析JSON,现在则是由运行时提供更有效的原生JSON支持。相对于ActionScript实现,原生的JSON API的速度更快,使用更少的内存。欲了解更多信息和代码示例,请参阅我的博客文章, AIR
    3中的原生JSON支持
  • 套接字(Socket)改进(移动和桌面)。曾经我们认为应该很容易的通过ProgressEvent.SOCKET_DATA来读取从网络传到ActionScript套接字缓冲区的数据,并确定有多少个字节可供读取
    (Socket.bytesAvailable)。然而,事实尚非如此。换句话说,在AIR 3之前,没有办法知道有多少数据从ActionScript套接字成功地写入了网络的缓冲区,也不可能知道有多少数据正在等待被写入。这导致开发者不确定调用套接字的close()关闭是否是安全的,或知道当用户想关闭应用程序的时候,是否有一个网络进程还在处理中。通过AIR
    3,开发人员可以使用 OutputProgressEvent.OUTPUT_PROGRESS 事件和Socket新属性 Socket.bytesPending ,以确定有多少数据被写入到网络,多少数据在ActionScript套接字中仍在等待写入。这些新的API可以帮助我们构建更强壮的依赖套接字网络访问的应用程序。欲了解更多信息和代码示例,请参阅我的博客文章, AIR
    3中套接字的改进
  • H.264视频编码 桌面)。您可以将摄像头捕获的视频基于H.264进行编码。
  • JPEG XR的支持 移动和台式机)。AIR 3现在支持JPEG XR,一个新的文件格式,相比JPEG有几个优点。例如,JPEG XR提供了更好的压缩率,更小的压缩损失,更准确的色彩,和Alpha透明度。欲了解更多信息,请查阅 Wikipedia上的JEPG
    XR文章
  • 更高分辨率的位图 移动和桌面) 。在之前的AIR中,位图被限制为16万像素(16777215像素)和8191的最大宽度/高度。在AIR 3中,所有的限制已被删除,这意味着现在的最大尺寸是由主机操作系统决定的,而不是AIR限制的。
  • 多声道数字音频输出 (只支持AIR for TV)。现在电视上的Adobe AIR可以播放杜比数字+ 5.1环绕声和DTS 5.1音频流。新的 Capabilities.hasMultiChannelAudio 属性,新的 AudioDecoder类(其中包含代表几个不同的多声道音频类型的常量),和 Capabilities.serverString 属性,都可以让开发者来检测设备的多声道音频功能,并从ActionScript中通过RTMP协议输出正确的音频比特流。
  • 高级控制器支持 (只支持AIR for TV)。使用新的 GameInput ,开发人员可以构建基于高级电视控制器的游戏。一些新的API允许枚举设备(可用控制器),枚举设备的控制功能(按钮,触发器,加速度等),并从设备中得到控制值。
  • 更容易删除一个容器的所有的子元件 (所有平台)。 DisplayObjectContainer现在已经具备了removeChildren() 函数,它可以只用一个方法删除所有的子元件。这当然比下面的操作更有效:
    while (this.numChildren > 0) this.removeChildAt(0)
  • 更容易判断MovieClip是否在播放 所有平台)。通过使用新的 isPlaying 属性,可以很容易判断一个MovieClip电影剪辑是否在播放。
  • GC建议的API (所有平台)。新的 System.pauseForGCIfCollectionImminent 功能,可以让AIR开发人员更好地控制运行时的自动垃圾回收机制。由于垃圾回收有可能造成动画或音频的暂停,开发者可以在用户难以察觉的时候,使用这个方法鼓励垃圾回收。
  • 安全随机数生成 移动和桌面)。Adobe 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>

抱歉!评论已关闭.