我缩减了对这种方法的减速
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 :(得分: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);
}
这样,更新标记应始终保持相同的时间(假设设备能够在帧速率值内运行代码)