keyPressed() 事件在我停止按键后继续触发
keyPressed() event carries on firing even after i stop pressing the key
因此,我绘制的对象开始向上或向下移动,具体取决于我按下的箭头键,但一旦我松开它,它就会继续朝同一方向移动,除非我按随机键,否则它不会停止。如果我向上按,它就会开始向上移动,并且即使在松开之后也会继续向上移动。如果我然后按下它开始向下移动并继续向下移动,即使我不再按下它。如果在移动时按下向上箭头键或向下箭头键以外的任何键,它将停止移动。
主要素描:
Defender defender1;
PImage background;
int x=0; //global variable background location
void setup() {
size(800,400);
background = loadImage("spaceBackground.jpg");
background.resize(width,height);
defender1 = new Defender(200,200);
}
void draw () {
image(background, x, 0); //draw background twice adjacent
image(background, x+background.width, 0);
x -=4;
if(x == -background.width)
x=0; //wrap background
defender1.render();
defender1.keyPressed();
}
后卫Class:
class Defender {
int x;
int y;
Defender(int x, int y) {
this.x = x;
this.y = y;
}
void render() {
fill(255,0,0);
rect(x,y,50,20);
triangle(x+50,y,x+50,y+20,x+60,y+10);
fill(0,0,100);
rect(x,y-10,20,10);
}
void keyPressed() {
if (key == CODED) {
if (keyCode == UP) {
defender1.y = y-1;
} else if (keyCode == DOWN) {
defender1.y = y+1;
}
}
}
}
每次调用 draw()
时,您都在调用 defender1.keyPressed()
函数。
key
和 keyCode
变量保存最近按下的键,无论该键当前是否被按下。
要检查当前是否有任何键被按下,您可以使用 keyPressed
变量。
或者您可以将代码更改为仅从草图级 keyPressed()
函数调用 defender1.keyPressed()
。
您可以在 the reference 中找到更多信息。
无耻的自我推销:here 是处理用户输入的教程。
因此,我绘制的对象开始向上或向下移动,具体取决于我按下的箭头键,但一旦我松开它,它就会继续朝同一方向移动,除非我按随机键,否则它不会停止。如果我向上按,它就会开始向上移动,并且即使在松开之后也会继续向上移动。如果我然后按下它开始向下移动并继续向下移动,即使我不再按下它。如果在移动时按下向上箭头键或向下箭头键以外的任何键,它将停止移动。
主要素描:
Defender defender1;
PImage background;
int x=0; //global variable background location
void setup() {
size(800,400);
background = loadImage("spaceBackground.jpg");
background.resize(width,height);
defender1 = new Defender(200,200);
}
void draw () {
image(background, x, 0); //draw background twice adjacent
image(background, x+background.width, 0);
x -=4;
if(x == -background.width)
x=0; //wrap background
defender1.render();
defender1.keyPressed();
}
后卫Class:
class Defender {
int x;
int y;
Defender(int x, int y) {
this.x = x;
this.y = y;
}
void render() {
fill(255,0,0);
rect(x,y,50,20);
triangle(x+50,y,x+50,y+20,x+60,y+10);
fill(0,0,100);
rect(x,y-10,20,10);
}
void keyPressed() {
if (key == CODED) {
if (keyCode == UP) {
defender1.y = y-1;
} else if (keyCode == DOWN) {
defender1.y = y+1;
}
}
}
}
每次调用 draw()
时,您都在调用 defender1.keyPressed()
函数。
key
和 keyCode
变量保存最近按下的键,无论该键当前是否被按下。
要检查当前是否有任何键被按下,您可以使用 keyPressed
变量。
或者您可以将代码更改为仅从草图级 keyPressed()
函数调用 defender1.keyPressed()
。
您可以在 the reference 中找到更多信息。
无耻的自我推销:here 是处理用户输入的教程。