2012-02-07 49 views
0

顯然有很多關於分數計數器的帖子,我有一個計數器可以更新每幀(Enter_frame函數)的工作正常。分數變量會增加每一幀,因此文本字段會變化以顯示分數。Flash AS3 - 分數計數器

我的問題是,在iOS上,它使應用程序有一些嚴重的幀速率問題,我說5-10 fps的下降,當分數ticker被啓用,它非常stuttery等我只是想知道是否有在某種程度上,我認爲這是因爲它必須更新和重新繪製每一幀的文本字段,但我無法找到解決方法。

歡迎任何建議,

謝謝!

回答

0

您應該將分數重新定義爲時間的函數。

score = t/100; //where t is in milliseconds 

在遊戲開始時,初始化一個計時器變量;

var start:Number = getTimer(); 

然後在你的ENTER_FRAME監聽器,計算從實際時間的分數,而不是幀數:

score = (getTimer() - s)/100; 

這是立足於時間的得分表現,獨立的方式。

+0

這是個好主意,感謝什麼!但是,我將實現這個功能,但仍然無法解決fps問題。 – Artharos 2012-02-07 19:29:37

+0

@Artharos您應該採取不同的步驟來優化您的移動應用程序。針對移動設備開發通常比較困難,因爲您通常在目標設備上獲得的資源較少。您應該確保最大限度的優化。我建議你找到關於「優化手機/ iOS版閃光燈」的信息,並檢查你是否遵循了最佳做法。 – joncys 2012-02-07 20:19:29

+0

@joncys我正在考慮優化移動設備。其他的一切正常(即產卵對象和管理它們)只是這個功能有點奇怪,我敢肯定,我將能夠找到一些更多的狩獵東西 – Artharos 2012-02-07 20:38:32

1

使用具有不透明背景的TextField或更改爲位圖字體可能有助於提高性能。

例如,您可以預先創建單獨的位圖圖像,或者在運行時您可以使用bitmapData.draw爲您需要的每個數字生成單獨的BitmapData實例。然後,您可以交換位圖以顯示正確的分數。

您可能還會考慮在未來使用NME,它與Flash非常相似,但比移動平臺的Adobe AIR執行速度快三至九倍。例如,Iain Lobb的BunnyMark基準測試可以使用iPhone 4上的Adobe AIR以16 FPS的速度渲染500個兔子,包括旋轉和alpha。NME在同一設備上以30 FPS渲染4750個兔子。

這就是我使用,以避免性能問題

http://www.haxenme.org

+0

感謝您的回覆!使用位圖數字並改變它們以顯示新數字的想法是一個好主意,沒有想到這一點。感謝您告訴我有關NME的信息,我只是快速瀏覽一下,看起來非常好,而且增加的幀數非常好!當我回到家中並回報時,我會安裝它,並隨身攜帶。 – Artharos 2012-02-08 09:24:11