Android GameLoop ruckelt?

bruce85

Bekanntes Mitglied
Hallo,
ich habe folgendes Problem und zwar bin ich gerade dabei ein kleines 2D Spiel zu schreiben, diese beinhaltet mehrere Bitmaps die sich im Spiel bewegen.

Ich habe dazu eine Klasse erstellt und mittels ArrayList erzeuge ich mehrere Objekte:
Java:
ArrayList<Entity> entityList = new ArrayList<Entity>();
public class Entity {
	Bitmap bmp;
	float posX;
	float posY;
	double speedX;
}
.........................................
Entity e = new Entity();
e.bmp = testBitmap;
e.posX = screenWidth;
e.posY = (screenHeight/2)-(e.bmp.getHeight()/2);	
entityList.add(e);
..........................................

Und hier zeichne ich dann das ganze z.B. so:
Java:
for(Iterator<Entity> it = entityList.iterator(); it.hasNext();) {
    	Entity e = it.next();
    	e.posX = e.posX - (3*getDensity());
    	canvas.drawBitmap(e.bmp, e.posX, e.posY, paint);
    	if (e.posX < -(e.bmp.getWidth())) {
    		it.remove();
    	}
}

Nur was mich stört ist, das es nie fließend läuft, es sind manchmal kleine oder auch oft starke ruckeln vorhanden.

Hier ist mal die GameLoopThread.class:
Java:
package de.test.testspiel;
import android.annotation.SuppressLint;
import android.graphics.Canvas;

@SuppressLint("WrongCall")
public class GameLoopThread extends Thread {
    private GameView theView;
    private boolean isRunning = false;
 
    public GameLoopThread(GameView theView) {
        this.theView = theView;
    }
 
    public void setRunning(boolean run) {
        isRunning = run;
    }
 
    @Override
    public void run() {
        while (isRunning) {
            Canvas theCanvas = null;
            try {
                theCanvas = theView.getHolder().lockCanvas();
                synchronized (theView.getHolder()) {
                    theView.onDraw(theCanvas);
                }
            } finally {
                if (theCanvas != null) {
                    theView.getHolder().unlockCanvasAndPost(theCanvas);
                }
            }
        }
    }
}

Könnte man das Problem irgendwie lösen, das es nicht mehr so ruckelt?

Ich bedanke mich schonmal im Voraus.

MfG
 

Bananabert

Bekanntes Mitglied
Moin,

warum sollte es damit nicht klappen?
Du Updatest deine Bitmaps nun mal so schnell wie es nur möglich ist.
Da kann es mal in einer Sekunde 20 Updates geben und der anderen wiederum nur 5. Daher kommt das Ruckeln.

Du brauchst einfach nur eine feste anzahl von Updates in einer Sekunde.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben