正在处理 IDE - 双击不同条件下的按钮

Processing IDE - Double Click on Buttons for Different Conditions

我的 LED Ring 上有 4 个区域,我做了 4 个按钮来选择它们。 我希望能够将这些区域用于不同的组合。

所以我的目标是:

单击按钮:选中区域激活。

双击按钮:所选区域无效。

我知道有一个名为 mousePressed() 的函数,但我无法在双击条件下将其实现到我的按钮。

这是我的一段代码 from 处理:

  Group AreaGroup = cp5.addGroup("AREAS")
    .setPosition(290,50)
    .setWidth(150)
    .setHeight(30)
    .setFont(font2)
    .moveTo(SetupGroup);
    background(0);
    noStroke();
    ;
    
    cp5.addButton("AREA_1")  // The button
    .setPosition(-15,10)     // x and y relative to the group
    .setSize(90, 50)       // (width, height)
    .setFont(font)
    .moveTo(AreaGroup);   // add it to the group 
    ;     
  
  
    cp5.addButton("AREA_2")  // The button
    .setPosition(90,10)    // x and y relative to the group
    .setSize(90, 50)       // (width, height)
    .setFont(font) 
    .moveTo(AreaGroup);   // add it to the group  
  ; 
  
    cp5.addButton("AREA_3")  // The button
    .setPosition(-15,80)     // x and y relative to the group
    .setSize(90, 50)       // (width, height)
    .setFont(font)
    .moveTo(AreaGroup);   // add it to the group 
    ;     
  
  
    cp5.addButton("AREA_4")  // The button
    .setPosition(90,80)    // x and y relative to the group
    .setSize(90, 50)       // (width, height)
    .setFont(font) 
    .moveTo(AreaGroup);   // add it to the group  
  ;
  
     cp5.addButton("ALL")  // The button
    .setPosition(190,45)    // x and y relative to the group
    .setSize(90, 50)       // (width, height)
    .setFont(font) 
    .moveTo(AreaGroup);   // add it to the group  
  ; 

void AREA_1(){
  println("AREA_1");
  if (port != null) port.write("a\n");
}

void AREA_2(){
  println("AREA_2");
  if (port != null) port.write("b\n");
}

void AREA_3(){
  println("AREA_3");
  if (port != null) port.write("c\n");
}

void AREA_4(){
  println("AREA_4");
  if (port != null) port.write("d\n");
}

void ALL(){
  println("ALL");
  if (port != null) port.write("t\n");
}

这是 Arduino 的代码片段

switch(state){

        case 'p':
        Serial.println(F("ex."));
        break;

        case 's':
        Serial.println(F("Start"));
          start = true;
        break;

        case '1':
        Serial.println(F("Switching to ring #1"));
          updateRing1 = true;
          updateRing2 = false;
        break;
        
        case '2':
          Serial.println(F("Switching to ring #2"));
          updateRing1 = false;
          updateRing2 = true;
        break;
        
        case 'a':
          Serial.println(F("Area1"));
          Area1 = true;
        break;  

        case 'b':
          Serial.println(F("Area2"));
          Area2 = true;
        break;

        case 'c':
          Serial.println(F("Area3"));
          Area3 = true;
        break;

        case 'd':
          Serial.println(F("Area4"));
          Area4 = true;
        break;

         case 't':
          Serial.println(F("All the leds are choosen"));
          total = true;
          Area1 = false;
          Area2 = false;
          Area3 = false;
          Area4 = false;
        break; 

如果您打算检测双击,请在第一次点击时启动 millis() 计时器,然后在第二次点击后读取第二个 millis() 读数并将其与时间阈值进行比较以检测它.您将需要几个时间变量,一个用于当前值,另一个用于存储前一个值。

您对 mousePressed() 函数到底做了什么尝试?很高兴知道您尝试了什么以及您在哪里失败以帮助您