【问题标题】:Is there a way to make a moving variable stop in processing through keyPressed有没有办法通过 keyPressed 使移动变量停止处理
【发布时间】:2021-05-23 08:32:30
【问题描述】:

我有一个任务,它希望一个变量在屏幕上一致地移动,并在它到达 x 轴的末端时反弹(我已经完成了这部分)。但是一旦按下一个键,它也需要变量停止移动......我知道我需要使用 keyPressed 但我不确定该怎么做。一些朋友告诉我使用布尔变量,但我不完全确定如何将其引入代码中。

【问题讨论】:

  • 一个对象可以通过改变它存储在变量中的坐标来移动。但是,变量不会移动。

标签: processing


【解决方案1】:

在这里,我使用了布尔变量isMoving 来跟踪是否按下了某个键。那么只有当这个布尔值为真并且按下一个键时,才会更新球的位置。

boolean isMoving = true;

// The position of the ball
int x = 500;
int y = 500;

// The speed of the ball
int x_inc = 2;
int y_inc = 3;

int diameter = 50;

void setup(){
  size(1000, 1000);
}

void draw(){
  background(0);
  
  if(isMoving){
    // Update ball position
    x += x_inc;
    y += y_inc;
    
    // Reverse direction for x axis
    if(x + diameter/2 >= width || x -diameter/2 <= 0){
        x_inc *= -1;
    }
  
    // Reverse direction for y axis
    if(y + diameter/2 >= height || y-diameter/2 <= 0){
        y_inc *= -1;
    }
  }
  
  circle(x, y, diameter);
}

void keyPressed(){
  // Update boolean value
  isMoving = !isMoving;
}

【讨论】:

    【解决方案2】:

    使用布尔变量最简单的方法是在if 语句中。如果你有一个布尔变量x,你可以写类似

    if (x) {
      //however you coded your ball's movement
    }
    

    x 为真时,球会移动。当x 为假时,球不会移动。之后,只需根据按键更改x即可。

    【讨论】:

    • 所以当按下键阻止它移动时我会让 x 为假?
    • @CharlottePeterson 我不太清楚您要做什么,但我的建议是进行一些实验,并尝试不同的场景。如果您仍然遇到问题,您可以再问一个问题。
    • 我最终做到了,但现在我有更多问题需要回答,哈哈。有什么办法可以 PM 吗?我真的很想得到你的帮助,并且认为如果我展示我的代码以及实际发生的事情会更容易解释
    • @CharlottePeterson Stack Overflow 上没有任何内置的私人消息系统,但如果你想显示你的代码,你可以编辑你的问题并将其添加到那里。如果您想单独与我联系,我的电子邮件在以下评论中。
    • 嘿!我给你发了电子邮件:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2019-03-01
    • 2021-12-29
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多