在子类中找不到控件 p5 slider.setRange()
control p5 slider.setRange() not found in subclass
我试图在子类中设置滑块的范围,使用 getController 捕获相应的控制器,它工作正常,由我在打印中获得的 returned 值证明。但是 controller.setRange() 没有被识别为一个函数。
范围只能在创建对象期间初始化,还是 getController return 是一个与我预期不同的对象?
谢谢!
class Stepper
{
String stepperName = "default";
int ID = motorID;
int stepperValue;
Stepper(String givenName) {
stepperName = givenName;
cp5.addSlider(stepperName)
.setPosition(sliderPosX+(sliderWidth+100)*surgeonBotID, sliderPosY+90*servoList.length+30*(motorID-servoList.length))
.setSize(sliderWidth, int(sliderHeight*0.5))
//.setRange(0, 179)
.setSliderMode(Slider.FLEXIBLE);
println("Created new Stepper: "+stepperName+ " ID: "+ID);
motorID++;
}
void setRange(float min, float max){
println("object: "+cp5.getController(getStepperName()).getValue());
cp5.getController(getStepperName()).setRange(min, max);
}
...
}
此类问题最好咨询 the API。
getController()
方法 returns 控制器。控制器 class 没有 setRange()
功能。该实例恰好是 Slider
的实例,它是 Controller
的子 class,但编译器无法知道这一点。这就是导致您出错的原因。
您可以通过将返回值转换为Slider
告诉编译器该实例确实是一个Slider
,然后您就可以访问Slider
class:
定义的方法
((Slider)cp5.getController(getStepperName())).setRange(min, max);
为了便于理解,这里分为两行:
Slider s = (Slider)cp5.getController(getStepperName());
s.setRange(min, max);
我试图在子类中设置滑块的范围,使用 getController 捕获相应的控制器,它工作正常,由我在打印中获得的 returned 值证明。但是 controller.setRange() 没有被识别为一个函数。
范围只能在创建对象期间初始化,还是 getController return 是一个与我预期不同的对象?
谢谢!
class Stepper
{
String stepperName = "default";
int ID = motorID;
int stepperValue;
Stepper(String givenName) {
stepperName = givenName;
cp5.addSlider(stepperName)
.setPosition(sliderPosX+(sliderWidth+100)*surgeonBotID, sliderPosY+90*servoList.length+30*(motorID-servoList.length))
.setSize(sliderWidth, int(sliderHeight*0.5))
//.setRange(0, 179)
.setSliderMode(Slider.FLEXIBLE);
println("Created new Stepper: "+stepperName+ " ID: "+ID);
motorID++;
}
void setRange(float min, float max){
println("object: "+cp5.getController(getStepperName()).getValue());
cp5.getController(getStepperName()).setRange(min, max);
}
...
}
此类问题最好咨询 the API。
getController()
方法 returns 控制器。控制器 class 没有 setRange()
功能。该实例恰好是 Slider
的实例,它是 Controller
的子 class,但编译器无法知道这一点。这就是导致您出错的原因。
您可以通过将返回值转换为Slider
告诉编译器该实例确实是一个Slider
,然后您就可以访问Slider
class:
((Slider)cp5.getController(getStepperName())).setRange(min, max);
为了便于理解,这里分为两行:
Slider s = (Slider)cp5.getController(getStepperName());
s.setRange(min, max);