Hallo Menschen,
ich bin gerade am versuchen, den Code diverser Tutorials zu befolgen (
Beispiel ), weil mein eigener Code nicht funktionierte.
Wie sich herausstellt, existiert selbiges Problem auch hier:
Ich versuche, in meiner main loop in ein Canvas zu zeichnen.
Hier die run-Methode meiner GameLoopThread-Klasse:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
@Override
public void run() {
long ticksPS = 1000 / FPS;
long startTime;
long sleepTime;
while(running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized(view.getHolder()) {
view.onDraw(c);
}
} finally {
if(c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try {
if(sleepTime > 0) {
sleep(sleepTime);
} else {
sleep(10);
}
} catch(Exception e) {
}
}
}
|
Hier die onDraw-Methode meiner GameView-Klasse:
|
Quellcode
|
1
2
3
4
5
|
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp,100,100,null);
}
|
onDraw wird tatsächlich aufgerufen, es gibt keine Fehlermeldung. Aber das Bild aktualisiert sich schlichtweg nicht.
Bei einigen Tests fand ich heraus, dass das Bild sich erst ändert, wenn die while-loop zueende ist.
Den Aufruf von onDraw durch invalidate oder postInvalidate zu ersetzen habe ich bereits probiert.
Habt ihr irgendwelche Ideen?
Danke im voraus,
Sound~Wave