Я просто пытаюсь выяснить лучший подход для запуска скроллинг фона на устройстве Android. Метод, который у меня есть до сих пор .... его довольно отстает. Я использую темы, которые я считаю не лучшим выбором для платформ Android
@Override
public void run() {
// Game Loop
while(runningThread){
//Scroll background down
bgY += 1;
try {
this.postInvalidate();
t.sleep(10);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
где postinvalidate в функции onDraw просто опускает фоновое изображение вниз
canvas.drawBitmap(backgroundImage, bgX, bgY, null);
Заранее спасибо
UPDATE
Я определил проблему. И это факт, что мой игрок обновляет ту же скорость, что и фоновые прокрутки (что делает его нестабильным). сверху вниз. Это потому, что оба рисуются в одной и той же функции. Я не совсем уверен, как справиться с этим, и был бы благодарен за любую помощь. т.е. чтобы движение игрока обрабатывалось отдельно от прокрутки карты
Также, как я могу контролировать скорость вызова onDraw (canvas)?
Заранее спасибо.
Однако я собрал воедино другой цикл выполнения для тех, у кого возникла такая же проблема. Это частично из примера Джетбой на Google.
Ниже мой внутренний класс в моем виде поверхности
class MapThread extends Thread{
private Map map;
private SurfaceHolder holder;
private boolean run = false;
public MapThread(Map map, SurfaceHolder holder){
this.holder = holder;
this.map = map;
setRunning(true);
}
public void setRunning(boolean run){
this.run = run;
}
@Override
public void run(){
while(run){
try{
Canvas c = null;
try {
c = holder.lockCanvas(null);
synchronized (holder) {
map.onDraw(c);
}
} finally {
if (c != null) {
holder.unlockCanvasAndPost(c);
}
}
}
}
}
РЕШЕНИЕ
https://gamedev.stackexchange.com/questions/8127/android-game-scrolling-background