为什么我的速度控制增加了 1 个以上?
Why is it adding more than 1 to my speed control?
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class Turtle extends Actor
{
/**
* Act - do whatever the Turtle wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
int laufmenge;
public void act()
{
if(Greenfoot.isKeyDown("left")){
move(-speed);
}
if(Greenfoot.isKeyDown("right")){
move(speed);
}
if(Greenfoot.isKeyDown("up")){
setLocation(getX() ,getY() -speed);
}
if(Greenfoot.isKeyDown("down")){
setLocation(getX() ,getY() +speed);
}
if(Greenfoot.isKeyDown("x")){
if(speed<10) speed++;
}
if(Greenfoot.isKeyDown("y")){
if(speed>0) speed--;
}
System.out.println(speed);
}
private int speed=1;
}
这是来自 Greenfoot 的代码,因为我目前正在尝试学习编码。我不明白为什么当我执行程序并控制速度时,他将值改变了不止一个。我想这将是一个简单的问题。
有没有可能像><键一样把速度的增加和减少放在一个两个字母的按钮上?我没有在我的案例中工作。
发生这种情况是因为 act()
被快速连续调用。即使你只是按下再松开x,act()
在按键按下时也会有运行几次,因此更新了几次速度。
为避免这种情况,您可以跟踪自从第一次注意到按钮被按下后是否调整了速度。
例如,您可以在 class 中添加一个 private bool adjustedSpeed = false;
,然后执行:
if(Greenfoot.isKeyDown("x")){
if(speed<10 && !adjustedSpeed) speed++;
adjustedSpeed = true;
} else if(Greenfoot.isKeyDown("y")){
if(speed>0 && !adjustedSpeed) speed--;
adjustedSpeed = true;
} else {
adjustedSpeed = false
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class Turtle extends Actor
{
/**
* Act - do whatever the Turtle wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
int laufmenge;
public void act()
{
if(Greenfoot.isKeyDown("left")){
move(-speed);
}
if(Greenfoot.isKeyDown("right")){
move(speed);
}
if(Greenfoot.isKeyDown("up")){
setLocation(getX() ,getY() -speed);
}
if(Greenfoot.isKeyDown("down")){
setLocation(getX() ,getY() +speed);
}
if(Greenfoot.isKeyDown("x")){
if(speed<10) speed++;
}
if(Greenfoot.isKeyDown("y")){
if(speed>0) speed--;
}
System.out.println(speed);
}
private int speed=1;
}
这是来自 Greenfoot 的代码,因为我目前正在尝试学习编码。我不明白为什么当我执行程序并控制速度时,他将值改变了不止一个。我想这将是一个简单的问题。 有没有可能像><键一样把速度的增加和减少放在一个两个字母的按钮上?我没有在我的案例中工作。
发生这种情况是因为 act()
被快速连续调用。即使你只是按下再松开x,act()
在按键按下时也会有运行几次,因此更新了几次速度。
为避免这种情况,您可以跟踪自从第一次注意到按钮被按下后是否调整了速度。
例如,您可以在 class 中添加一个 private bool adjustedSpeed = false;
,然后执行:
if(Greenfoot.isKeyDown("x")){
if(speed<10 && !adjustedSpeed) speed++;
adjustedSpeed = true;
} else if(Greenfoot.isKeyDown("y")){
if(speed>0 && !adjustedSpeed) speed--;
adjustedSpeed = true;
} else {
adjustedSpeed = false
}