Processing -如何将扩展类移动到组中



来自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);
}
}

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

我不确定你能把组中的组分组。我可能错了,如果我错了,希望有更有经验的人可以纠正我。

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

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环,但不是同时显示,也许你可以使用手风琴?

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);
}
}

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

最新更新