【问题标题】:Toggle keys inside processing code在处理代码中切换键
【发布时间】:2017-10-31 01:37:51
【问题描述】:
if (keyPressed) {
  if (key == 'r') {
    }
  }
}

void keyReleased() {
  if (key == 'r') { 
    stroke(random(0,255), random(0,255), random(0,255));
    line(mouseX, mouseY, pmouseX, pmouseY);
    }
}

我正在尝试创建一个函数,该函数允许代码根据我是否按“r”来切换随机颜色。我是在正确的道路上还是语法有问题?我尝试过布尔值、类类型和 if 语句。

【问题讨论】:

    标签: toggle processing


    【解决方案1】:

    我不完全确定您在问什么,但here 是有关在处理中获取用户输入的教程。您还应该真正尝试break your problem down into smaller steps,然后一步一步地采取这些步骤。

    例如,这是一个小示例程序,当您按下R 键时,它会随机绘制颜色:

    void draw(){}
    
    void keyPressed(){
      if(key == 'r'){
       background(random(256), random(256), random(256)); 
      }
    }
    

    我建议你从这样一个小程序开始,一次只关注问题的一小部分。然后,如果您遇到困难,您可以发布 MCVE 以及特定的技术问题。祝你好运。

    【讨论】:

    • 我正在尝试让代码打开和关闭。如果我按下 r 键,它会进入颜色模式,线条会改变颜色,然后当我再次按下它时,它会切换回绘制基本的白线。
    • @DivinaSims 听起来您可以为此使用boolean 变量。在keyPressed() 函数中切换它,然后在draw() 函数中检查它。
    【解决方案2】:

    我不确定我是否理解您的要求。当您按 r 或 R(baseColor 和随机一种)时,以下代码在 2 种颜色之间交换。

    color currentColor;
    color baseColor = color(0, 0, 0, 255);
    
    void setup() {
        currentColor = baseColor;
        stroke(currentColor);
        size(600, 600);
    }
    
    void draw() {
        background(255, 255, 255, 255);
        line(width / 2, height / 2, mouseX, mouseY);
    }
    
    void keyReleased() {
        if(key == 'r' || key == 'R') { // key is case sensitive
            if(!(currentColor == baseColor))
                currentColor = baseColor;
            else
                currentColor = color(random(0, 255), random(0, 255), random(0, 255), random(0, 255)); // your color
            stroke(currentColor);
        }
    }
    

    【讨论】:

    • 为什么它不适用于我的代码?尝试切换键时我应该使用两个全局变量还是仅适用于此示例?
    • @DivinaSims 它只是从屏幕中心画一条线到鼠标位置,在 baseColor 和随机颜色之间交换。它是主文件,所以如果您创建一个新的处理草图并复制粘贴它应该可以工作,因此您可以检查代码并查看发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2020-06-21
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    相关资源
    最近更新 更多