2012-02-01 60 views
1

別的之前,這是問題的代碼位:大規模的效率問題

for (var i in yearMarkersArray) { 
yearMarkersArray[i].x = ((timelines.x + 350) % 140) + (140 * i) - 5; 
yearMarkersArray[i].text = "0"; 
} 

這是主循環觸發的一部分,每當用戶拖動縮小了的時間表( eventsArray中的精靈)向左或向右。 yearMarkersArray中的六個TLFText對象似乎與用戶向左或向右滾動,但真正重新定位並用正確的年份標記重新標記,這是由我上面未包括的函數計算出來的(它正在工作並且與此問題無關,我只是將其替換它與「0」爲清晰)。

文本設置語句是問題代碼...我已經從主循環中字面上評論了其他所有內容以驗證它。我甚至將語句更改爲不涉及任何函數調用(簡單地將text屬性設置爲「0」),並且它仍然導致最終的.swf每15秒鐘額外消耗1%的CPU,直到最終FPS崩潰穿過地板。主循環的其餘部分有很多很複雜的部分,我相信效率低下的代碼也會運行每一幀,我不知道爲什麼這一條語句會造成很大的麻煩。

由於此項目讀取的數據文件包含時間軸事件列表,其時間範圍事件的列表無法預測,因此我需要以某種方式動態顯示年份標記。該代碼最終有效(我只是注意到當我意外地將電影打開並閒置幾分鐘時出現可笑的放緩),但我對Flash非常陌生,如果可用,我完全可以使用替代解決方案。在此先感謝您的建議!

+1

嘗試使用「經典」TextField而不是TLFTextTextField,並將抗鋸齒設置爲「用於動畫」。 – 2012-02-01 23:47:28

+0

我試圖運行一個框架循環,將TextField的文本值設置爲「0」,並觀察內存佔用和CPU使用情況 - 隨着時間的推移沒有增加。對我而言,這意味着你的程序可能還有其他問題,這些問題與文本更改相結合會導致問題。 – weltraumpirat 2012-02-02 00:20:01

+0

如果隨着時間的推移CPU使用率增加,我猜測你有某種內存泄漏。當然,如果不看更多的代碼,這是不可能的。 – weltraumpirat 2012-02-02 00:22:06

回答

1

TLFText是很慢的動態改變,並且真的應該只用於需要額外的格式化文本的拖動移動。動態經典文本是實現小型可變領域的方法。

0

這是主循環觸發每當用戶拖動 的縮小了的時間表

你打電話從牽引起動或拖舉這個循環的一部分嗎?

如果這是你的問題