control p5 slider.setRange() не найден в подклассе
Я пытаюсь установить диапазон ползунка внутри подкласса, перехватывая соответствующий контроллер с помощью getController, который работает нормально, что подтверждается возвращаемым значением, которое я получаю при печати. Но controller.setRange() не распознается как функция.
диапазон может быть инициализирован только при создании объекта или getController возвращает объект, отличный от ожидаемого?
Спасибо!
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);
}
...
}
1 ответ
На подобные вопросы лучше всего ответить, обратившись к API.
getController()
Метод возвращает контроллер. Класс Controller не имеет setRange()
функция. Этот случай бывает экземпляром Slider
, который является подклассом Controller
, но компилятор не может этого знать. Вот что вызывает твою ошибку.
Вы можете сказать компилятору, что экземпляр действительно Slider
приведя возвращенное значение к Slider
и затем вы можете получить доступ к методам, определенным Slider
учебный класс:
((Slider)cp5.getController(getStepperName())).setRange(min, max);
Чтобы было проще понять, здесь он разделен на две строки:
Slider s = (Slider)cp5.getController(getStepperName());
s.setRange(min, max);