2014-02-15 76 views
3

我有我的速度變慢縮小到這種方法遊戲編程性能

public void drawMap(Canvas canvas) { 

    if (car.x > 0 && map != null) { 
     clipArea = Bitmap.createBitmap(map, mapx, mapy, getWidth(), 
       getHeight()); 
     canvas.drawBitmap(clipArea, 0, 0, null); 
    } 
} 

這需要大約3秒跑!任何幫助將不勝感激位圖是大約兩倍的屏幕大小,但這是我的遊戲的關鍵,所以我需要保持這:)任何幫助優化?感謝

回答

0

你總在等待一個固定的時間在這裏,獨立的整體計算和UI更新多久

frame.postDelayed(frameUpdate, FRAME_RATE); 

你想要做的是:創建一個時間戳變量的新「遊戲滴答」前, 然後你做了計算,然後你檢查剩下多少時間,直到下一個刻度應該是。

是這樣的:

synchronized public void run() { 


    Date timestamp = new Date(); 

    // do your calculations 
    ... 

    // calculate how much time it took and when the next update should be: 
    int timeToNextTick = FRAME_RATE - (new Date().getTime() - timestamp.getTime()); 
    frame.postDelayed(frameUpdate, timeToNextTick); 

} 

這種方式,更新蜱應始終是同樣的定時(假定該設備能夠運行幀率值內的代碼)

+0

您好我發現這非常有趣的,所以決定看看我實際得到什麼FPS並獲得50fps大約需要6秒!這是你說的話還是我的代碼?因爲這是一個自上而下的賽車遊戲,我不明白它是如何運行的緩慢:( – user3313094

+0

好吧,現在我正在測量我已縮小到繪製背景!請參閱編輯 – user3313094