为什么我的速度控制增加了 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() 被快速连续调用。即使你只是按下再松开xact()在按键按下时也会有运行几次,因此更新了几次速度。

为避免这种情况,您可以跟踪自从第一次注意到按钮被按下后是否调整了速度。

例如,您可以在 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

    }