Inheritance ControlP5不';t修改plugTo对象的继承变量
在下面的示例中,B类扩展了一个类,它继承了int变量 cp5滑块插入到B对象的实例,赋值变量为“a” 控制台中打印的a值始终为0,因此滑块不会修改a变量Inheritance ControlP5不';t修改plugTo对象的继承变量,inheritance,processing,control-p5,Inheritance,Processing,Control P5,在下面的示例中,B类扩展了一个类,它继承了int变量 cp5滑块插入到B对象的实例,赋值变量为“a” 控制台中打印的a值始终为0,因此滑块不会修改a变量 我怎样才能使controlP5对类的继承变量起作用呢?简而言之,我不认为你能让它像这样工作 现在来看,当您调用plugTo()函数时,它使用了引擎盖下的反射 具体来说,它使用getDeclaredFields()函数,该函数只返回子类中的字段,而不返回任何父类 在我看来,你有三个选择: 停止使用继承。ControlP5不是设计用来处理这种继承的
我怎样才能使controlP5对类的继承变量起作用呢?简而言之,我不认为你能让它像这样工作 现在来看,当您调用
plugTo()
函数时,它使用了引擎盖下的反射
具体来说,它使用getDeclaredFields()
函数,该函数只返回子类中的字段,而不返回任何父类
在我看来,你有三个选择:
停止使用继承。ControlP5不是设计用来处理这种继承的。所以只需使用简单的类,您就会很好
请求此功能。您可以为此提交功能请求。但我猜这不会是一个高优先级,因为它不是一个典型的用例
自己动手。ControlP5是开源的。所以你可以自己做些改变。或者您可以编写一个简单的解决方案,可能是一个不同的类,其中的函数以某种方式映射到子类
import controlP5.*;
ControlP5 cp5;
B b;
void setup()
{
size(200,200);
b = new B();
cp5 = new ControlP5(this);
cp5.addSlider("a")
.setPosition(20,20)
.setRange(0,255)
.plugTo(b,"a");
}
void draw()
{
println(b.a , frameCount);
}
class B extends A
{
B()
{
super();
}
}
class A
{
int a;
A()
{
a = 0;
}
}