【问题标题】:Processing - How to move the extended class to the group处理 - 如何将扩展类移动到组
【发布时间】:2021-08-17 11:57:09
【问题描述】:

cp5 中的 ColorPicker 是硬编码的,我无法调整滑块的形状。所以我扩展了 ColorPicker 类并创建了一个名为 MyColorPicker 的新类。

我有几个小组,我想将我的新课程添加到其中一个小组。 早些时候,我可以通过cp5.addColorPicker("") .moveTo("") 来完成,但在这种情况下,有一个新课程,我无法将它移到组中。以下是代码片段:

import controlP5.*;
ControlP5 cp5;
 
MyColorPicker cp;
 
void setup() {
  size(500, 300);
  noStroke();
  cp5 = new ControlP5(this);
  cp = new MyColorPicker(cp5, "MYPICKER");
  cp.setPosition(50, 50).setColorValue(color(255, 000, 000, 255));

  Group SetupGroup = cp5.addGroup("SETUP")
    .setPosition(90,100)
    .setWidth(150)
    .setHeight(30)
    .setFont(font2);
    background(0); //For transparency
    noStroke();
  ;

    Group ColorGroup = cp5.addGroup("COLOR-BRIGHTNESS")
    .setPosition(30,240)
    .setWidth(300)
    .setHeight(30)
    .setFont(font2)
    .moveTo(SetupGroup);
    background(0);
    noStroke();
    ;

//I want to move my own color picker to the colorGroup instead of this one.
/*
    cp5.addColorPicker("PICKER")
    .setPosition(40, 10)
    .moveTo(ColorGroup);
    ; */
.
.
.
.
.
.
.}

class MyColorPicker extends ColorPicker {
  MyColorPicker(ControlP5 cp5, String theName) {
    super(cp5, cp5.getTab("default"), theName, 0, 0, 100, 10);
  }
 
  void setItemSize(int w, int h) {
    sliderRed.setSize(w, h);
    sliderGreen.setSize(w, h);
    sliderBlue.setSize(w, h);
    sliderAlpha.setSize(w, h);
   
    sliderRed.setPosition(10,10);
    sliderGreen.setPosition(10,100);
    sliderBlue.setPosition(10,180);
    sliderAlpha.setPosition(10,260);
  }
}

【问题讨论】:

    标签: processing processing-ide


    【解决方案1】:

    我建议在发布之前修复语法错误,并删除任何可能与问题无关的代码。过去多次尝试以这种方式清理/最小化代码使解决方案对我来说显而易见。

    我不确定您是否可以在组内对组进行分组。我可能错了,如果我错了,希望对 cp5 更有经验的人能纠正我。

    如果您使用单个组并修复语法错误,您可以运行如下代码:

    import controlP5.*;
    ControlP5 cp5;
     
    MyColorPicker cp;
     
    PFont font, font2; 
     
    void setup() {
      size(500, 300);
      noStroke();
      
      font = createFont ("Georgia Bold", 20);
      font2 = createFont ("Georgia Bold",15);
      
      cp5 = new ControlP5(this);
      
      Group SetupGroup = cp5.addGroup("SETUP")
        .setPosition(90,100)
        .setWidth(150)
        .setHeight(30)
        .setFont(font2);
    
      cp = new MyColorPicker(cp5, "MYPICKER");
      cp.setPosition(50, 50).setColorValue(color(255, 000, 000, 255));
      cp.moveTo(SetupGroup);
    }
    
    void draw(){
      background(0);
    }
    
    class MyColorPicker extends ColorPicker {
      MyColorPicker(ControlP5 cp5, String theName) {
        super(cp5, cp5.getTab("default"), theName, 0, 0, 100, 10);
      }
     
      void setItemSize(int w, int h) {
        sliderRed.setSize(w, h);
        sliderGreen.setSize(w, h);
        sliderBlue.setSize(w, h);
        sliderAlpha.setSize(w, h);
       
        sliderRed.setPosition(10,10);
        sliderGreen.setPosition(10,100);
        sliderBlue.setPosition(10,180);
        sliderAlpha.setPosition(10,260);
      }
    }
    

    在扩展颜色选择器方面做得很好,毕竟不是菜鸟;)

    如果您想要两个 LED 环的两个颜色选择器但不能同时显示两个,也许您可​​以使用 accordion

    import controlP5.*;
    ControlP5 cp5;
     
    MyColorPicker cp1, cp2;
     
    PFont font, font2; 
     
    void setup() {
      size(500, 300);
      noStroke();
      
      font = createFont ("Georgia Bold", 20);
      font2 = createFont ("Georgia Bold",15);
      
      cp5 = new ControlP5(this);
      
      Group ring1Group = cp5.addGroup("ring 1")
        .setPosition(90,100)
        .setWidth(150)
        .setHeight(30)
        .setFont(font2);
        
      cp1 = new MyColorPicker(cp5, "ring 1 picker");
      cp1.setPosition(50, 50).setColorValue(color(255, 000, 000, 255));
      cp1.moveTo(ring1Group);
      
      Group ring2Group = cp5.addGroup("ring 2")
        .setPosition(90,240)
        .setWidth(150)
        .setHeight(30)
        .setFont(font2);
        
      cp2 = new MyColorPicker(cp5, "ring 2 picker");
      cp2.setPosition(50, 50).setColorValue(color(000, 255, 000, 255));
      cp2.moveTo(ring2Group);
      
      cp5.addAccordion("ring colors")
         .setPosition(40,40)
         .setWidth(200)
         .addItem(ring1Group)
         .addItem(ring2Group)
         ;
    }
    
    void draw(){
      background(0);
    }
    
    class MyColorPicker extends ColorPicker {
      MyColorPicker(ControlP5 cp5, String theName) {
        super(cp5, cp5.getTab("default"), theName, 0, 0, 100, 10);
      }
     
      void setItemSize(int w, int h) {
        sliderRed.setSize(w, h);
        sliderGreen.setSize(w, h);
        sliderBlue.setSize(w, h);
        sliderAlpha.setSize(w, h);
       
        sliderRed.setPosition(10,10);
        sliderGreen.setPosition(10,100);
        sliderBlue.setPosition(10,180);
        sliderAlpha.setPosition(10,260);
      }
    }
    

    我也不确定手风琴组件是否支持多个嵌套级别。我希望它支持扁平的层次结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多