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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top