Как использовать событие keyPressed с помощью GameCanvas в J2ME? - PullRequest
1 голос
/ 11 декабря 2011

Ну, у меня есть проблема, которую я не могу решить, и попробовал ее разными способами, но безуспешно. Я хочу нажать кнопку, и если она останется внизу, пуля не сможет выстрелить.

Итак, сначала я попробовал:

public void checkInput() {
    int iKeyPressed;

    iKeyPressed = this.getKeyStates();

    if((iKeyPressed & LEFT_PRESSED) != 0) {
        this.player.moveLeft();
    }
    else if((iKeyPressed & RIGHT_PRESSED) != 0) {
        this.player.moveRight();
    }

    if((iKeyPressed & FIRE_PRESSED) != 0 && this.bKeyReleased) {
        Bullet bullet;
        int x;
        int y;

        bullet = new Bullet(loadImage("bullet.png"), 4, 22, 1, (this.player.getVel()*2)*(-1));
        x = (this.player.getX()+(this.player.getWidth()/2))-(bullet.getWidth()/2);
        y = this.player.getY();
        bullet.setPosition(x, y);
        this.lstBullets.addElement(bullet);
        //this.bKeyReleased = false;
    }
}

И я вызываю этот метод в своем основном цикле. Это работает, но если ключ остается нажатым, пули все еще выходят. Когда я пытаюсь переопределить метод keyPressed, он не работает, потому что я не знаю, как вызвать этот метод. Если я попытаюсь вызвать его непосредственно в моем основном цикле, это не сработает, так как я могу заставить его работать?

Кто-нибудь может показать мне, как я называю этот метод для правильной работы?

1 Ответ

1 голос
/ 11 декабря 2011

getKeyStates () не сообщает о событиях как таковых.Он вернет true для ключа, если он удерживается ИЛИ был в какой-то момент между текущим вызовом getKeyStates и последним вызовом.Вам придется переопределить метод keyReleased , чтобы действовать, когда пользователь отпускает клавишу, а не когда нажимает ее.

...