programmation Java aide et le développement Android
-
22-10-2019 - |
Question
Je suis en train de dessiner une image sur une autre image lorsqu'un utilisateur touche l'écran. Mais l'image apparaît uniquement lorsque les touches utilisateur et disparaît quand ils ont laissé partir de l'écran.
Ceci est ma méthode si:
int RED = 0;
int GREEN = 1;
Graphics g = game.getGraphics();
int len = touchEvents.size();
if (RED == 0) {
ready = Assets.readybtntwo;
}
for(int i = 0; i < len; i++) {
TouchEvent event = touchEvents.get(i);
if(event.type == TouchEvent.TOUCH_UP){
updateWaiting(touchEvents);
RED +=1;
if (RED == 0)
ready = Assets.readybtntwo;
if(RED == 1)
ready = Assets.readybtngreentwo;
}
g.drawPixmap(ready, 0, 0);
}
Désolé, je suis sur un cadre construit à partir du livre à partir des jeux Android. Mais il ne faut pas d'importance, je veux l'image de rester pour toujours et à mettre fin à la boucle si.
La solution
Vous avez une erreur de logique ici. Il ressemble à la RED
variable est locale à votre méthode si le code ci-dessus est tout à l'intérieur du gestionnaire d'événement tactile. Cela signifie que lorsque l'utilisateur touche l'écran chaque fois qu'il est remis à 0 et devient alors 1 à nouveau. Ceci est probablement pas ce que vous voulez.
La raison pour laquelle il est seulement rendu est que g.drawPixmap sera soit un élément à soumettait une file d'attente de tirage ou en le rendant immédiatement. Cette méthode pour dessiner le bouton ne jamais être tirée lorsque vous avez un événement tactile!
, vous pourriez plutôt avoir une valeur booléenne de drawGreenReadyButton en tant que membre de la classe, i.e..
private boolean drawGreenReadyButton = false;
Ensuite, vous pouvez changer cette instruction if interne à ce qui suit:
if(event.type == TouchEvent.TOUCH_UP){
updateWaiting(touchEvents);
drawGreenReadyButton = true;
}
Et dans votre boucle principale de rendu plutôt que dans la vente de gestionnaire d'événement tactile:
if(drawGreenReadyButton) {
g.drawPixmap(Assets.readybtngreentwo, 0, 0);
} else {
g.drawPixmap(Assets.readybtntwo, 0, 0);
}
En outre, envisager d'utiliser TouchEvent.TOUCH_DOWN
plutôt que TouchEvent.TOUCH_UP
, de sorte que le bouton apparaît vert dès qu'ils touchent l'écran, pas quand ils lèvent leur doigt vers le haut.