Java “使块/字符移动”;X px“;什么时候;W或W“;按下时仅一次,按下时不继续行走;W和W“;被压制

Java “使块/字符移动”;X px“;什么时候;W或W“;按下时仅一次,按下时不继续行走;W和W“;被压制,java,processing,Java,Processing,我想让我的矩形/字符在按“W或W”时移动“X像素”,但只移动一次。按住“W和W”时,不要继续移动。我曾经尝试过用一个变量创建一个“按键释放”函数,当按下“W或W”时,该变量会发生变化。但它并没有真正起作用,它只是使矩形/字符移动了一次“X px”,之后就不会朝那个方向移动了。简而言之,我希望矩形/字符在每次“单击”按钮时移动50px,有点像是一步一步。而不是流体运动。有人能帮忙吗? 代码是用Java编写的,正在处理 类字符{ 浮动x=0; 浮动y=0; //运动 无效移动(){ 如果(按键){

我想让我的矩形/字符在按“W或W”时移动“X像素”,但只移动一次。按住“W和W”时,不要继续移动。我曾经尝试过用一个变量创建一个“按键释放”函数,当按下“W或W”时,该变量会发生变化。但它并没有真正起作用,它只是使矩形/字符移动了一次“X px”,之后就不会朝那个方向移动了。简而言之,我希望矩形/字符在每次“单击”按钮时移动50px,有点像是一步一步。而不是流体运动。有人能帮忙吗? 代码是用Java编写的,正在处理

类字符{
浮动x=0;
浮动y=0;
//运动
无效移动(){
如果(按键){
如果(键=='w'| |键=='w'){
//术语,向前/向上移动,Y轴。
y-=50;
}
}
如果(按键){
如果(键=='a'| |键=='a'){
//terms,向右移动,X-axel。
x-=50;
}
}
如果(按键){
如果(键=='s'| |键=='s'){
//术语,向后/向下移动,Y轴。
y+=50;
}
}
如果(按键){
if(key='d'| | key='d'){
//terms,向左移动,X-axel。
x+=50;
}
}
}
我想让我的矩形/角色移动[…],但只移动一次

添加事件并从事件中调用
move
,但不要调用它

keyPressed
在每次按键时被调用一次。因此,当按键时,字符只移动一次。但是,由于操作系统可能会处理按键重复,最后按下的按键将被存储。如果在
keyprelease
发生之前再次按下同一按键,则必须跳过该按键。例如:

Character ch=新字符();
int lastKey=0;
按下void键(){
if(lastKey!=密钥){
lastKey=密钥;
ch.move();
}
}
void keyReleased(){
lastKey=0;
}
在示例中,
ch
假定为您的
字符的实例

我想让我的矩形/角色移动[…],但只移动一次

添加事件并从事件中调用
move
,但不要调用它

keyPressed
在每次按键时被调用一次。因此,当按键时,字符只移动一次。但是,由于操作系统可能会处理按键重复,最后按下的按键将被存储。如果在
keyprelease
发生之前再次按下同一按键,则必须跳过该按键。例如:

Character ch=新字符();
int lastKey=0;
按下void键(){
if(lastKey!=密钥){
lastKey=密钥;
ch.move();
}
}
void keyReleased(){
lastKey=0;
}

在示例
ch
中,假设是您的
Character

实例,我知道我将其放置在绘图之外,并且部分起作用。但是当我按住“W或W”时,它会移动多个步骤,而不是仅移动一个步骤。是否有方法使其移动一次,即使我按住“W或W”向下?当我按下并释放“W”按钮时,它会按预期移动50px。但当我按下“W”按钮但不释放它时,它会移动不止一次;50px,50px,50px,…我添加了打印(键);但它仍然会移动。这就是我的代码调用对象时的样子。void setup(){g=new gubbe();//画布大小(800800);笔划权重(10);帧速率(30);//*}void键按下(){g.move();print(key);}void draw(){//Canvas färg background(100);//*g.Fight();g.display();g.checkEdges();g.BarsDisplay();g.HealthDisplay();g.XpDisplay();}找到了。它成功了!谢谢,伙计。在那里节省了我很多时间。我是Java初学者,你可以这么说。你可以在释放键而不是按下键的情况下进行移动,所以它只在释放键时进行移动,而不是在按下键或按住键的情况下进行移动……或者可能在按下键而不是按下键的情况下进行移动。我知道我把它放在了绘图之外,并且部分地进行了移动工作正常。但当我按住“W或W”时,它会移动多个步骤而不是一个步骤。有没有办法让它移动一次,即使我按住“W或W”键?当我按下并松开“W”键时,它会按预期移动50像素。但当我按下“W”键但不松开它时,它会移动不止一次;50像素,50像素,50像素,…我添加了打印(键)这就是我的代码调用对象时的样子。void setup(){g=new gubbe();//画布大小(800800);strokewweight(10);帧速率(30);//*}void key pressed(){g.move();print(key);}void draw(){//Canvas färg background(100)/*g.Fight();g.display();g.checkEdges();g.BarsDisplay();g.HealthDisplay();g.XpDisplay();}找到了。它成功了!谢谢,伙计。在那里节省了我很多时间。我是Java的初学者,你可以这么说。你可以在释放键而不是按下键时移动,所以它只在释放键时移动,而不是在按下键或按住键时移动……或者可能在按下键而不是按下键时移动