嗯,我有一个问题,我无法通过多种方式解决和尝试,但是没有成功。我想按一个按钮,如果它停下来,子弹就不会发射。
所以我尝试了这个,首先:
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方法时,它不起作用,因为我不知道如何调用此方法。如果我尝试直接在我的主循环中调用它,它不起作用,那么,我怎么能使它工作?
任何人都可以告诉我如何将此方法称为正常工作?
答案 0 :(得分:1)
getKeyStates()不会报告事件本身。如果按住它,它将在键上返回true,或者在当前对getKeyStates的调用和最后一次调用之间的某个时刻向下返回。您必须覆盖keyReleased方法才能在用户按下按键时执行操作,而不是在按下按键时执行操作。