2012-02-04 104 views
0

我在過去兩年在某些桌面應用上使用flex。到目前爲止,我從未遇到任何與性能相關的問題,但今天,當我們完成iPad的移動應用程序時,我面臨着一個挑戰,iPad的應用程序非常慢。什麼可能會減慢我的Flex移動應用程序?

http://i.stack.imgur.com/qkbWn.png

慢,意味着當我在菜單中按一個按鈕來改變SPLITVIEW我必須等待像5秒。然後滾動速度真的很慢,只有不到一個fps,我的TextInput開始出錯(文本不在他的盒子裏)。

我開始閱讀大量的博客文章和介紹有關優化移動平臺,然後我重寫了一些我用的組件。例如,我刪除了SkinnableContainer,並將其替換爲包含一些基於actionScript的繪圖的VGroup。

現在你看到的是一個包含了一些其他VGroup(標題爲這裏的組)和VGroup(暗灰色的),那麼每個插件是一個標籤和一個Widget的HGroup。我只使用Label和TextInput作爲文本。

對於其中只有4個文本小部件的另一個頁面,或者只有帶有自定義項目渲染器的列表的其他頁面,每個行都是4個集合的創建時間甚至很慢(創建視圖的幾秒鐘)標籤。

整個事情是有線與Robotlegs的,有沒有什麼特別的,一個車型在視圖中注入一開始我設置一個成員變量的觀點與此對象綁定我的變量。

坦率地說,現在我的想法是:它的氣味腥,因爲如果我所做的一切權利就不可能有如此低的表現,認爲flex是在移動平臺上的競爭力。所以現在我試圖逐個禁用應用程序來嘗試找到可能會減慢速度的東西。我有幾個嫌疑人要檢查,比如我有一些有約束力的警告來檢查,然後看看robotlegs是否已經解決了問題。

所以我在這裏主要的問題是你怎麼想,你可以有關於一些想法「是有問題」和「如何解決它」。

感謝

+1

不幸的是,這個問題太模糊,無法回答。我認爲你需要一個正式的代碼審查來獲得有用的東西。已知Flex [和Flash]在移動設備上不是很好。我想我聽說Robotlegs在移動設備上引入了其他問題。它需要做的事情是在每次視圖更改時重新創建視圖,並且Robotlegs重新執行所有初始化內容。這可能很耗時間;但我會從一個真正簡單的東西開始(比如單個視圖/按鈕),然後慢慢添加東西以查看導致減速的原因。 – JeffryHouser 2012-02-04 14:02:32

+0

這是我今天下午計劃的。我知道我的問題有點含糊,但以防萬一有人有想法。感謝您的支持。 – Whirly 2012-02-04 15:30:07

+0

我的Flash手機遊戲有性能問題,我通過簡化圖形來解決。但它看起來不像你有任何截圖中的複雜圖形。 – JeffryHouser 2012-02-04 16:18:30

回答

0
  1. 運行探查啓動和separatelly對於需要渴望,它需要每一個操作。然後優先考慮問題並嘗試用基本的優化技術來解決問題。
  2. 您無法快速解決的一些問題 - 例如創建大型組件的時間。唯一的選擇是使用AS3重寫那些組件,而不使用MXML,樣式和任何東西。我確信flash.text.TextField的創建速度比mx.controls.Label快很多倍。其他組件也一樣。
  3. 組件創建時,它可以以非常低的價格重新使用。在您的應用程序中,您可以重新使用舊組件的同時,必須有許多地方可以重新創建。它會節省你的記憶和時間。
  4. 即使不需要,佈局也會重新繪製。如果您有很多嵌套佈局,請查找最關鍵的位置,並用一個自定義佈局或組件來替換一系列佈局。

這一切都十分開發商耗時。最後你不會得到一個流暢的應用程序,但我相信它可以變得可用。

+0

我解決了這個問題,基本上我做了什麼: 1)我改寫了使用actionscript代碼的容器。 2)在一些裝飾器上添加了一些「cacheAsBitmap true」。 3)爲幾個組件進行固定佈局,似乎所有這些HGroup/VGroup在顯示新視圖時都會破壞我的用戶體驗。 4)......發現如果你使用滾動條,你不應該在其中放置原生的文本輸入。 就是這樣,問題解決了,客戶滿意,並且在兩週內爲我提供了200小時的代碼。時間打絲綢。 – Whirly 2012-02-06 21:46:38

相關問題