当我按“ W或w”但仅一次时,我想使我的矩形/字符移动“ X px's”。按住“ W and w”时,不要继续移动。我试过用按下“ W或w”时会更改的变量来制作“按键释放”功能。但是它并没有真正起作用,只是这样做了,因此Rectangle / Character一次移动了“ X px's”,之后便不再朝那个方向移动。简而言之,我希望每次“单击”按钮时,矩形/字符都移动50px,这是一步一步来的。而不是流畅的动作。谁能帮忙? 该代码是用Java处理编写的。
class Character {
float x = 0;
float y = 0;
//VV Movement VV
void move() {
if (keyPressed) {
if (key == 'w' || key == 'W') {
//terms, move forward/up, Y-axel.
y -= 50;
}
}
if (keyPressed) {
if (key == 'a' || key == 'A') {
//terms, move right, X-axel.
x -= 50;
}
}
if (keyPressed) {
if (key == 's' || key == 'S') {
//terms, move backwards/down, Y-axel.
y += 50;
}
}
if (keyPressed) {
if (key == 'd' || key == 'D') {
//terms, move left, X-axel.
x += 50;
}
}
}
答案 0 :(得分:0)
我想使矩形/字符移动[...],但只移动一次
添加一个keyPressed()
事件并从该事件中调用move
,但不要在draw()
中对其进行调用。
注意keyPressed
每次按键时都会调用一次。因此,当按键时,角色仅移动一次。但是由于操作系统可以处理按键重复,因此必须存储最后按下的按键。如果在keyReleased
出现之前再次按下相同的键,则必须跳过该键。例如:
Character ch = new Character();
int lastKey = 0;
void keyPressed() {
if (lastKey != key) {
lastKey = key;
ch.move();
}
}
void keyReleased() {
lastKey = 0;
}
在示例ch
中假定您是Character
的实例。