Estoy tratando de hacer un juego para Android.¿Por qué no es view.invalidate? Volver a dibujar inmediatamente la pantalla en mi juego de Android
Tengo una clase de juego que extiende la actividad y maneja todas las entradas del usuario. Luego tengo una clase missionView que extiende la vista y dibuja el nivel en la pantalla.
Cuando el usuario hace clic en una puerta, quiero agregar algo de animación.
Lo que sucede es: El juego se llama door.open. Cambia el estado para que la función view.onDraw dibuje la puerta medio abierta. El juego llama a view.invalidate, que debería volver a dibujar la pantalla. Entonces el juego duerme por medio segundo. Luego llama a door.open otra vez. La segunda vez que se llama a la función, cambia el estado para que la función view.onDraw dibuje la puerta completamente abierta. Luego el juego llama a view.invalidate nuevamente.
El problema es que no vuelve a dibujar la pantalla cuando llega a view.invalidate. Si establezco un punto de interrupción en la línea y ejecuto el depurador y hago clic en "entrar", no entra en mi función view.onDraw. Ni siquiera puede mostrarme el código que está ejecutando.
Lo que tengo es: Clase Puerta:
public boolean open()
{
if (doorState == DoorState.Closed)
{
doorState = DoorState.Opening;
return true;
}
else if (doorState == DoorState.Opening)
{
doorState = doorState.Open;
return true;
}
else
{
return false;
}
}
clase Juego:
if (tile instanceof DoorTile)
{
DoorTile doorTile = (DoorTile) tile;
Door door = doorTile.getDoor();
if (door.isClosed())
{
door.open();
selectedEntity.openDoor();
view.invalidate(); // This line does not work
try
{
Thread.sleep(500);
}
catch (InterruptedException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
door.open();
// Handled touch event so break switch statement
break;
}
}
He leído esta discusión, pero no había entendido lo que tengo que hacer para que mi código funcione. No había entendido cómo usar "Manejador" y "Mensaje". –
Es posible que desee echar un vistazo a la discusión relacionada en http://stackoverflow.com/questions/2801877/android-why-wont-invalidate-update-my-buttons-immediately –