
Problema con SurfaceView
Publicado por anonymous (1 intervención) el 30/11/2019 13:02:01
Esta es mi primera pregunta en este foro! Estoy intentando dibujar un tablero con una surfaceView. El problema es que si cada vez dibujo el tablero y los gameObjects(las fichas de los jugadores) se me ralentiza un montón. He intentado que dibuje el tablero la primera vez solo con un surfaceCreated y los gameObjects en el run() del thread al cual voy llamando. No para de parpadear todo el rato la pantalla y aparecer imágenes repetidas. Lo ideal sería que dibujara el fondo una vez y después solo las fichas de los jugadores que son las que se mueven, conservando el fondo claro.
Os pongo un trozo del codigo para que sea más claro.
-Parte surfaceCreated:
-Parte del run():
Muchas gracias
Os pongo un trozo del codigo para que sea más claro.
-Parte surfaceCreated:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
if (holder.getSurface().isValid()) {
canvas = holder.lockCanvas();
drawTablero(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
}
});
-Parte del run():
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
@Override
public void run() {
if (game == null) {
return;
}
handler.postDelayed(this, 1000 / 15);
this.invalidate();
draw();
game.physics();
game.processInput();
touches.clear();
}
protected void draw() {
if (holder.getSurface().isValid()) {
canvas = holder.lockCanvas();
if (game == null) {
holder.unlockCanvasAndPost(canvas);
return;
} else {
game.draw(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
}
Muchas gracias
Valora esta pregunta


0