2017-01-08 4 views
2

다음 예제에서는 B 클래스가 A 클래스를 확장하고 int를 변수로 상속합니다.ControlP5는 plugTo 객체의 상속 된 변수를 수정하지 않습니다.

cp5 슬라이더가 B 개체의 인스턴스에 연결되어 있고 assign 변수가 "a"입니다.

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; 
     } 
    } 

콘솔에 인쇄 된 값은 항상 0이므로 슬라이더가 변수를 수정하지 않습니다.

클래스의 상속 된 변수에 대해 controlP5를 작동 시키려면 어떻게해야합니까?

답변

1

단편 소설은 당신이 그렇게 생각하지 않는다는 것입니다.

the ControlP5 source에서 보면 plugTo() 함수를 호출 할 때 후드에서 반사를 사용합니다.

특히, 부모 클래스가 아닌 자식 클래스의 필드 만 반환하는 getDeclaredFields() 함수를 사용합니다.

정지 사용하여 상속 :

내가 볼때, 당신은 세 가지 옵션이 있습니다. ControlP5는 이와 같은 상속을 위해 설계되지 않았습니다. 그러니 그냥 간단한 수업으로 가면 괜찮을거야.

이 기능을 요청하십시오. 기능 요청을 제출할 수 있습니다. 그러나 전형적인 유스 케이스가 아니기 때문에 이것이 우선 순위가 아닐 것이라고 생각합니다.

직접 해보십시오. ControlP5는 공개 된 소스입니다. 그래서 당신은 스스로 변화를 만들 수 있습니다. 또는 간단한 해결 방법을 쓸 수도 있습니다. 어쩌면 자식 클래스에 매핑되는 함수를 사용하는 다른 클래스 일 수도 있습니다.