음악, 삶, 개발
juce::Timer 클래스의 사용 본문
< 공식 문서 >
< 설명 >
아래의 GUI, Audio thread 의 근간이 되는 클래스이다.
pure virtual 을 가진 추상 클래스라서, 객체를 만들지않고 상속해야한다.
아래와 같이 객체를 생성하여 사용하는게 아니라,
class MyComponent : public juce::Component {
juce::Timer timer;
}
아래와 같이 상속을 하고 pure virtual 을 정의해주고, 생성자와 파괴자에서 start 와 stop 을 반드시 해줘야한다.
class MyComponent : public juce::Component, juce::Timer {
public :
MyComponent() {
startTimer(1000); // 반드시 생성자에서 start 해줘야함.
}
~MyComponent() {
stopTimer(); // 반드시 파괴자에서 stop 해줘야함.
}
void timerCallback() override {
// timerCallback() 은 순수 가상 함수임.
// 반드시 정의해야함!
}
}
위와 같이 사용해야하며,
위의 코드에서는 1초마다 timerCallback() 함수가 호출되게된다.
juce::Component 에 juce::Timer 클래스가 사용되었다면,
플러그인창이 열려있을때, 즉 GUI 가 보일때만 timerCallback() 이 호출되고,
플러그인창이 닫혀있으면 호출되지않는다.
위의 Ableton Live 에서 플러그인창이 닫혀있다.
플러그인창이 닫혀있을때 Juce 는 GUI 요소들을 파괴하고,
창이 열릴때 다시 생성한다.
즉 플러그인창이 닫혀있으면 GUI 객체들은 존재하지않기때문에,
timerCallback(); 또한 호출되지않는것이다.