游戏编程性能

时间:2014-02-15 10:34:49

标签: java android iphone performance

我缩减了对这种方法的减速

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秒钟才能运行!任何帮助将不胜感激位图大约是屏幕大小的两倍,但这是我的游戏的关键,所以我需要保持这个:)任何优化的帮助?感谢

1 个答案:

答案 0 :(得分: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);

}

这样,更新标记应始终保持相同的时间(假设设备能够在帧速率值内运行代码)