Adobe AIR 3新特性(支持iOS和Android平臺)

2011-09-22 09:00:56來源:作者:

自從2008年發(fā)布了第一個版本,Adobe AIR已經(jīng)走過了很長的一段路。在此期間,我們?yōu)锳IR增加了幾十個較大的特性,上百個較小的特性,性能優(yōu)化和錯誤修復(fù),并且我們支持3個額外的平臺:iOS (iPhone和iPad),Android, 和

自從2008年發(fā)布了第一個版本,Adobe AIR已經(jīng)走過了很長的一段路。在此期間,我們?yōu)锳IR增加了幾十個較大的特性,上百個較小的特性,性能優(yōu)化和錯誤修復(fù),并且我們支持3個額外的平臺:iOS (iPhone和iPad),Android, 和Adobe AIR for TV.

AIR 3將是我們在不到兩年半的時間里的第11個發(fā)行版本。雖然我們每次的發(fā)行版都代表了很大的進(jìn)步,但我個人覺得這次是非比尋常的。AIR 3包括以下新的API和特性:

 

  • Stage3D(桌面特性)。Stage3D是一個底層的,具備硬件加速的二維和三維渲染的 API。對于AIR 3,目前這些API只能在AIR的桌面版本中使用,然而,未來這些特性也將進(jìn)入移動設(shè)備。Stage3D是一個非常重要的特性,它的意義之大讓我們感到言語都難以描述,您可以從這里得到更加詳細(xì)的信息, 請參閱Stage 3D頁面。
     
  • 本地擴(kuò)展 (所有平臺)。這又是一個重要的特性。從AIR 3的版本開始,開發(fā)者可以通過綁定本地擴(kuò)展和應(yīng)用程序,來增強(qiáng)AIR運(yùn)行時的功能,然后他們就可以在ActionScript中調(diào)用那些擴(kuò)展(這個特性原先只在Adobe AIR 2.5 for TV中存在,但是基于AIR 3,這個特性在所有的平臺可用)。您可以認(rèn)為Adobe AIR本地擴(kuò)展(簡稱ANEs)就是ActionScript庫(SWCs),只不過是包含了本機(jī)代碼實現(xiàn)。ANEs的適用場合,包括讓您的應(yīng)用程序訪問 AIR所不支持的原生API(見下面的例子),并授權(quán)在某些情況下訪問本機(jī)代碼,以達(dá)到更好的性能。關(guān)于更多AIR 3本地擴(kuò)展的信息,請參閱奧利弗.高盛的這篇文章:擴(kuò)展Adobe AIR
     
  • Android Market的授權(quán)集成 (顯然只支持Android)。使用ANE文件,開發(fā)人員可以訪問Android Market的授權(quán)服務(wù),讓發(fā)布者執(zhí)行許可政策。這是一個能體現(xiàn)ANE強(qiáng)大特性的很好的例子:因為這個特性(授權(quán)服務(wù))在iOS中是不可用的,所以我們不會把它作為AIR的直接支持的功能;但是,ANE可以保證我們運(yùn)行于Android設(shè)備的AIR應(yīng)用可以很輕松的訪問這些API。
     
  • 運(yùn)行時捆綁 (Android和桌面)。在之前的版本中,需要您的最終用戶在安裝您的應(yīng)用之前,已經(jīng)安裝了AIR的運(yùn)行時(如果沒有,則必須先安裝AIR運(yùn)行時),如果您想改變這個過程(讓您的應(yīng)用程序安裝過程和其它本地安裝的應(yīng)用程序沒有區(qū)別),或者您是想控制您的應(yīng)用程序運(yùn)行所需的AIR版本,AIR 3允許您捆綁AIR運(yùn)行時和您的應(yīng)用程序。捆綁運(yùn)行時非常容易,當(dāng)您構(gòu)建一個Android應(yīng)用時可以設(shè)置apk-captive-runtime變量,如果是構(gòu)建桌面應(yīng)用,則可以設(shè)置bundle變量。(注意在iOS上AIR一直使用一個捆綁的運(yùn)行時,雖然其機(jī)制不太相同。)
     
  • 背景音頻播放 (對于iOS是新特性;在Android上之前就被支持了)。由于iOS獨(dú)特的多任務(wù)模式,在之前如果我們想在AIR應(yīng)用處于非活動狀態(tài)的時候繼續(xù)播放音頻,是不可能的。在AIR 3中,您所需要做的只是修改您的應(yīng)用程序描述文件,聲明您需要播放背景音樂,然后它會自動工作。(基本上,當(dāng)應(yīng)用程序被放置到后臺程序中,它將繼續(xù)運(yùn)行。但是,所有的屏幕更新將被禁用,以保持電池壽命,并符合iOS的多任務(wù)要求。)
     
  • 在iPad對CameraRoll的支持。雖然CameraRoll在技術(shù)上已經(jīng)被iPad支持,但是我們在AIR 3中增加了很多更好的支持。在iPad上,圖片選擇器不再占用整個屏幕,在iPhone和iPod touch上也是如此。相反,它會在調(diào)用它的UI組件的相對位置上,出現(xiàn)一個浮動的面板。使用額外的CameraRollBrowseOptions類,開發(fā)人員可以選擇圖像選擇器的大小和位置,并指定調(diào)用它的UI組件的位置。欲了解更多信息和代碼示例,請參閱我的博客文章, 如何正確使用iPad上的CameraRoll API 。
     
  • 視頻硬件加速 (移動設(shè)備):AIR 2.5通過StageVideo為TV帶來了視頻硬件加速;現(xiàn)在AIR 3則為移動設(shè)備也提供了StageVideo。
     
  • 本機(jī)文本字段(移動設(shè)備) 。之前版本的AIR提供給開發(fā)者訪問底層渲染的能力,比如StageVideo (視頻硬件加速)和StageWebView (本地的HTML渲染)。AIR 3提供了StageText的API,它允許開發(fā)人員將系統(tǒng)原生的文本字段放置在移動應(yīng)用程序中。雖然您仍然可以使用Flash文本字段,但是 StageText文本字段可以使用所有操作系統(tǒng)底層支持的特性,比如放大鏡,文本選擇,自動更正等等。
     
  • 前置攝像頭支持 (iOS和Android),F(xiàn)在ActionScript的攝像頭API可以訪問 iOS和Android設(shè)備的前置攝像頭和后置攝像頭(如果是Android設(shè)備,至少需要2.3的版本)。您可以使用新的 Camera.position屬性以及新CameraPosition類中的常量(背部,正面,和UNKNOWN)來確定攝像機(jī)的位置。欲了解更多信息和代碼示例,請參閱我的博客文章, AIR 3前置攝像頭支持 。
     
  • 移動設(shè)備的加密本地存儲(帶來了臺式機(jī)和移動設(shè)備之間的等價實現(xiàn))。EncryptedLocalStore的API曾經(jīng)只在桌面上可用,現(xiàn)在則進(jìn)入了iOS和Android。這個API用于安全地存儲用戶憑據(jù),加密密鑰,私密信息,和類似的重要信息。
     
  • 設(shè)備揚(yáng)聲器控制 (移動設(shè)備)。使用新的SoundMixer audioPlaybackMode屬性,和新的AudioPlaybackMode類中的常量(媒體和語音),開發(fā)人員可以控制是否是通過電話的聽筒或揚(yáng)聲器播放音頻。
     
  • 原生JSON支持 (移動和臺式機(jī))。原先只能使用ActionScript來解析JSON,現(xiàn)在則是由運(yùn)行時提供更有效的原生JSON支持。相對于ActionScript實現(xiàn),原生的JSON API的速度更快,使用更少的內(nèi)存。欲了解更多信息和代碼示例,請參閱我的博客文章, AIR 3中的原生JSON支持 。
     
  • 套接字(Socket)改進(jìn)(移動和桌面)。曾經(jīng)我們認(rèn)為應(yīng)該很容易的通過 ProgressEvent.SOCKET_DATA來讀取從網(wǎng)絡(luò)傳到ActionScript套接字緩沖區(qū)的數(shù)據(jù),并確定有多少個字節(jié)可供讀。⊿ocket.bytesAvailable)。然而,事實尚非如此。換句話說,在AIR 3之前,沒有辦法知道有多少數(shù)據(jù)從ActionScript套接字成功地寫入了網(wǎng)絡(luò)的緩沖區(qū),也不可能知道有多少數(shù)據(jù)正在等待被寫入。這導(dǎo)致開發(fā)者不確定調(diào)用套接字的關(guān)閉是否是安全的,或知道當(dāng)用戶想關(guān)閉應(yīng)用程序的時候,是否有一個網(wǎng)絡(luò)進(jìn)程還在處理中。通過AIR 3,開發(fā)人員可以使用OutputProgressEvent.OUTPUT_PROGRESS事件和Socket新屬性.bytesPending,以確定有多少數(shù)據(jù)被寫入到網(wǎng)絡(luò),多少數(shù)據(jù)在ActionScript套接字中仍在等待寫入。這些新的API可以幫助我們構(gòu)建更強(qiáng)壯的依賴套接字網(wǎng)絡(luò)訪問的應(yīng)用程序。欲了解更多信息和代碼示例,請參閱我的博客文章, AIR 3中套接字的改進(jìn) 。
     
  • H.264視頻編碼 (桌面)。您可以將攝像頭捕獲的視頻基于H.264進(jìn)行編碼。
     
  • JPEG XR的支持 (移動和臺式機(jī))。AIR 3現(xiàn)在支持JPEG XR,一個新的文件格式,相比JPEG有幾個優(yōu)點(diǎn)。例如,JPEG XR提供了更好的壓縮率,更小的壓縮損失,更準(zhǔn)確的色彩,和Alpha透明度。欲了解更多信息,請查閱Wikipedia上的JEPG XR文章
     
  • 更高分辨率的位圖(移動和桌面) 。在之前的AIR中,位圖被限制為16萬像素(16777215像素)和8191的最大寬度/高度。在AIR 3中,所有的限制已被刪除,這意味著現(xiàn)在的最大尺寸是由主機(jī)操作系統(tǒng)決定的,而不是AIR限制的。
     
  • 多聲道數(shù)字音頻輸出 (只支持AIR for TV)。現(xiàn)在電視上的Adobe AIR可以播放杜比數(shù)字+ 5.1環(huán)繞聲和DTS 5.1音頻流。新的Capabilities.hasMultiChannelAudio屬性,新的AudioDecoder類(其中包含代表幾個不同的多聲道音頻類型的常量),和Capabilities.serverString屬性,都可以讓開發(fā)者來檢測設(shè)備的多聲道音頻功能,并從 ActionScript中通過RTMP協(xié)議輸出正確的音頻比特流。
     
  • 高級控制器支持 (只支持AIR for TV)。使用新的GameInput API,開發(fā)人員可以構(gòu)建基于高級電視控制器的游戲。一些新的API允許枚舉設(shè)備(可用控制器),枚舉設(shè)備的控制功能(按鈕,觸發(fā)器,加速度等),并從設(shè)備中得到控制值。
     
  • 更容易刪除一個容器的所有的子元件 (所有平臺)。DisplayObjectContainer現(xiàn)在已經(jīng)具備了removeChildren()函數(shù),它可以只用一個方法刪除所有的子元件。這當(dāng)然比下面的操作更有效:
    (this.numChildren> 0)this.removeChildAt(0)
     
  • 更容易判斷MovieClip是否在播放 (所有平臺)。通過使用新的isPlaying屬性,可以很容易判斷一個電影剪輯是否在播放。
     
  • GC建議的API(所有平臺)。新的System.pauseForGCIfCollectionImminent功能,可以讓AIR開發(fā)人員更好地控制運(yùn)行時的自動垃圾回收機(jī)制。由于垃圾回收有可能造成動畫或音頻的暫停,開發(fā)者可以在用戶難以察覺的時候,使用這個方法鼓勵垃圾回收。
     
  • 安全隨機(jī)數(shù)生成 (移動和桌面)。Adobe AIR中一直有Math.random方法可用,返回“偽隨機(jī)”的數(shù)字,也就是說,這似乎是隨機(jī)的,但總是包含一些非隨機(jī)性(比如時間戳)的數(shù)字。AIR 3提供了一個用于生成隨機(jī)數(shù)的新方法,稱為generateRandomBytes(),位于flash.crypto包。由于 generateRandomBytes()函數(shù)使用操作系統(tǒng)API來產(chǎn)生隨機(jī)數(shù)(在Windows上是CryptGenRandom ,在OSX上是/dev/random , 在Android上是/dev/urandom, 在iOS上則是SecRandomCopyBytes),由此產(chǎn)生的隨機(jī)數(shù)更有效,更安全。
     
  • 三次貝塞爾曲線 (所有平臺) 。新的cubicCurveTo()方法是Graphics類的功能,允許您以編程方式繪制三次貝塞爾曲線,而且不使用第三方ActionScript代碼。

Adobe AIR 3作為一個候選發(fā)布版可以在Adobe實驗室中找到 。

編譯/瑞研社區(qū)
作者:克里斯汀.坎貝爾原文: http://www.adobe.com/devnet/air/articles/air3_whatsnew.html
關(guān)鍵詞:AdobeAIRiOSAndroid

贊助商鏈接: