Je suis en train de faire un jeu Android.Pourquoi n'est pas view.invalidate immédiatement redessiner l'écran dans mon jeu Android
J'ai une classe de jeu qui étend l'activité et gère toutes les entrées de l'utilisateur. Ensuite, j'ai une classe missionView qui étend la vue et dessine le niveau sur l'écran.
Lorsque l'utilisateur clique sur une porte, je veux ajouter une animation. Qu'est-ce qui se passe est: Le jeu appelle door.Open. Modifie l'état de sorte que la fonction view.onDraw dessine la porte à moitié ouverte. Le jeu appelle view.invalidate, ce qui devrait redessiner l'écran. Ensuite, le jeu dort pendant une demi-seconde. Ensuite, il appelle à nouveau door.open. La deuxième fois que la fonction est appelée, elle change d'état, de sorte que la fonction view.onDraw dessine la porte complètement ouverte. Ensuite, le jeu appelle à nouveau view.invalidate.
Le problème est qu'il ne redessine pas l'écran quand il arrive à view.invalidate. Si je mets un point d'arrêt sur la ligne et que j'exécute le débogueur et que je clique sur le pas, cela ne marche pas dans ma fonction view.onDraw. Il ne peut même pas me montrer le code qu'il exécute.
Ce que j'est: classe de porte:
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;
}
}
classe du jeu:
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;
}
}
J'ai lu cette discussion, mais je n'avais pas compris ce que je devais faire pour que mon code fonctionne. Je n'avais pas compris comment utiliser "Handler" et "Message". –
Vous pouvez jeter un oeil à la discussion connexe à http://stackoverflow.com/questions/2801877/android-why-wont-invalidate-update-my-buttons-immédiatement –