您的位置:首页 > 大数据 > 人工智能

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

2012-10-28 22:38 253 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: