1

Im trying to set the Range of a slider within a subclass, catching the respective controller using getController, which works fine, proven by the returned value i get within the print. But controller.setRange() doesnt get recognized as a function.

can the range only be initialized during the creation of the object or does getController return a different object than i expect it does?

thanks!

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

1 回答 1

1

最好通过咨询API来回答此类问题。

getController()方法返回一个控制器。Controller 类没有setRange()功能。该实例恰好是 的一个实例Slider,它是 的子类Controller,但编译器无法知道这一点。这就是导致您的错误的原因。

Slider您可以通过将返回值转换为 a 来告诉编译器该实例确实是 a 然后Slider您可以访问Slider该类定义的方法:

((Slider)cp5.getController(getStepperName())).setRange(min, max);

为了更容易理解,这里分为两行:

Slider s = (Slider)cp5.getController(getStepperName());
s.setRange(min, max);
于 2015-05-21T13:39:49.537 回答