在子类中找不到控件 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);