基於Starling移動專案開發準備工作

2021-09-01 15:00:09 字數 2624 閱讀 9159

**: starling中文站 -  starling移動開發教程

現在移動開發可謂熱火朝天,如果您是一位flash開發者,或許您所在的團隊,已經開始基於flash內容的移動應用開發了。由於adobe已經提供了air打包技術,來幫我們把同乙份程式打包到ios,android,blackberry等系統或裝置,這在很大程度上降低了跨平台的研發成本,也為傳統的flash研發團隊進入移動開發領域提供了很好的機會。但是有機遇,也有麻煩。其中乙個比較大的麻煩就是效能問題。現在的pc平台都有很強大的計算能力,我們基於flash的應用開發,一般不太關心效能問題,但進入移動裝置,我們會發現自己面臨的硬體環境相當苛刻(當然現在的智慧型機硬體配置已經大大改善,讓我們開發上的限制已經寬鬆了許多)。比如我們基於傳統思路,用flas***剪輯等方式做了乙個應用,在pc上預覽沒有問題,但在移動裝置上卻不能很好的執行(出現丟幀現象,這是顯示渲染的壓力太大所致)。為什麼會出現這種情況?因為flash中傳統的顯示列表機制(stage,sprite,movieclip),都是依賴cpu的,也就是說渲染壓力基本都在cpu上。在移動裝置上cpu處理能力低下的情況下,出現丟幀的現象也就不足為奇了。

能改善這種情況的一種方式就是利用gpu加速,也就是利用顯示卡在圖形方面的計算能力,減輕cpu在螢幕渲染上的壓力。但悲劇的是,adobe在「為傳統的顯示列表機制提供gpu加速」這個工作上進展緩慢,之前曾推出了在配置檔案中增加gpu的設定來開啟硬體加速,但不要激動,這個設定對於pc無效,對於移動裝置也是限制多多,而且並不穩定。筆者曾經在乙個專案中分別設定cpu和gpu模式來測試程式(ipad 1),發現cpu模式反而執行效率更好且穩定。出現這樣的情況相當讓人沮喪,adobe的技術團隊也專門寫過一篇blog來解釋其中的難度之大:flash在之前的架構設計上完全是基於於cpu的(通常我們稱之為軟解),也就是說傳統的2d顯示列表就是為cpu渲染設計的,這對於跨平台來說非常有效,但現在要遷移到gpu上就非常麻煩了。

這對我們來說,就意味著如果我們之前有乙個複雜的,基於flash傳統顯示列表的應用或遊戲,想要原封不動的移植到智慧型裝置上,而且還要保證和pc相似的執行效率,還是挺困難的。當然flash盛行了這麼多年,開發者也積累了很多行之有效的經驗,來提公升執行效率(比如基於bitmap的動畫實現,以空間換時間),這些經驗可以幫助我們在一定程度上改善現有應用的執行效率。但可能還不夠,移動裝置的特性決定我們需要盡可能的將優化做到極致。要做到這一點,我們必須更有效的利用gpu。當然adobe也意識到gpu對於提公升渲染效能的重要性,所以推出了stage3d。stage3d雖然也做了抽象(解決平台無關性),但無疑是和硬體更接近的,基於stage3d我們可以開發和桌面遊戲相媲美的網路3d遊戲。當然因為stage3d是偏底層的api,學習和掌握的成本也高一些。關於stage3d本文不做過多介紹,如果您還不了解stage3d,建議參考下面的文章:

當然正如其名,stage3d是面向3d應用的api。如果我們只是想做2d應用,是不是就不能使用stage3d了呢?當然也是可以的,但程式設計和實現思路將和我們之前的flash經驗大不相同,我們需要完全站在顯示卡的角度去編寫實現過程,這無疑將是枯燥而且困難的,而且有很高的學習成本。所幸的是,一些具備探索和分享精神的技術達人,在stage3d的基礎上做了進一步的封裝,以更接近傳統flash 2d顯示物件的機制,來提供對傳統flash開發者更加友好的技術框架。這樣的框架已經存在一些,比較知名的有starling,nd2d等等。其中starling得到adobe官方的推薦,其介面也和flash原有顯示物件非常接近,所以筆者也選擇了starling來進行專案實踐,並和大家分享這個過程中的經驗。

starling是由gamua團隊推出和維護的乙個基於stage3d的2d框架。這是乙個位於奧地利的團隊,有兩位核心開發成員:daniel sperl和holger weissböck。他們擅長objective c和actionscript,也正是因為這樣,他們實際上有兩個開源框架:starling framework和sparrow framework,兩個框架的設計思想是一樣的,只是前者面向flash,後者面向ios。

工欲善其事,必先利其器,讓我們先把「**」準備好。這裡的**是指我們的ide,考慮到大多數flash開發者應該都是基於flash builder進行程式設計的(flash professional實在不適合程式設計,其它第三方ide比如flash develop,當然也很優秀,但為了文章簡練起見,不再涉及其它ide了,如果您使用其它ide,請參考ide的幫助,整合最新的air sdk即可),我們就以flash builder為準,來介紹後面的操作步驟。

請安裝最新的flash builder 4.6,這個版本已經支援移動專案建立,並且包含了最新的flex sdk 4.6(ps:我們後面的討論裡不包括flex框架或flex專案,只是在flash builder中任何型別的專案都是依賴flex sdk來編譯的),但是內建的flex sdk 4.6包含的是air 3.1的sdk,而對於移動裝置的stage3d支援則是在air 3.2中實現的。所以這個地方我們要做一下調整,替換flex sdk中的air的部分。

操作步驟:

請遵循下面的步驟啟動這個例子

如果您想在真實裝置測試,就要分情況而言:如果是android裝置,比較簡單,通過自建證書打包為apk,安裝到android裝置即可;如果是iphone或ipad ,就麻煩一些,您需要乙個蘋果認可的簽名證書才能完成打包,這個證書需要註冊蘋果開發者賬號並付費才能獲取,具體過程參見james li的教程,這裡不再細述。

今天就到這裡,後面我會繼續和大家**使用starling過程中的一些問題和經驗。

AIR移動(Starling)開發筆記基礎篇

kiddy ps 文件寫的不是很好,歡迎指正和擴充套件a.自定義函式var tw tween new tween ball,1,transfun starling.juggler.add tw private function transfun pre number void b.自定義更新方法va...

Starling在應用於移動裝置開發時的注意事項

最近一段時間,使用了starling作為移動平台上的ios遊戲開發,發現starling在應用於移動裝置時,有幾點重要的注意事項,如果沒有躲過,很容易耗費很長的時間徘徊而不知其解,現總結如下 1.打包問題 對於移動裝置的stage3d支援是在air 3.2中實現的。flash builder4.6內...

基於Vue的專案打包為移動端app

首先,基於vue開發的應用,現在主流的是使用vue cli的4.x版本搭建的專案,從vue cli的3.x版本以後,如何修改vue的專案配置呢?過程和步驟如下。我們需要在專案根目錄下建立乙個vue.confing.js檔案,專案目錄如下 在vue.config.js中,我們就可以寫很多webpack...