음악, 삶, 개발
valueTree 의 변화 캐치하기. (서로 공유하기) 본문
설명
valueTree 는 내가 Max 에서 사용했던 dict 와 같은 것이다.
플러그인의 파라미터들 저장하고, 변경하고
다른 클래스의 객체들과 송신하는것이다.
valueTree 에서 행해지는 변화는 juce::ValueTree::Listener 를 사용하여 notify 받는다.
중요한건, 반드시 tree.addListener(this) 를 constructor 로 호출해야한다.
이 valueTree 는 복사해도 실제로 복사되지않고, 하나인 global 로 존재한다고한다.
따라서 이 valueTree 를 다른 클래스의 객체로 넘길때 pass-by-value 해도 실제로 복사되지는않는다고한다.
아래와 같이 다른 class 가 valueTree 가 변화될때 캐치할수있도록 한다.
아래는 Component 클래스를 상속한 나의 GUI 가 될것이고, valueTree 에 따라 먼가를 그릴것이다.
그냥 외우자.
class Test : public Component, juce::ValueTree::Listener {
public :
Test(juce::ValueTree v) : tree(v) {
tree.addListener (this);
}
void valueTreePropertyChanged(juce::ValueTree& treeWhosePropertyHasChanged, const juce::Identifier& property) override {
// property 값이 변했을때 callback
}
private :
juce::ValueTree tree;
}
참고자료