如何触发具有相同值的ValueListener

时间:2016-11-19 00:34:59

标签: juce

我听一个包含要加载的文件路径的Value。我想加载相同的文件,但是除非路径与上一个事件不同,否则侦听器系统不会做出反应。

如何让ValueListener触发相同的数据?

1 个答案:

答案 0 :(得分:1)

首先,创建一个派生自Value::ValueSource的类,该类具有自己重写的setValue()实现,如下所示:

void setValue (const var& newValue) override
{
   // base class version checks for equality first. Skip that
   // and always set the value and notify of changes.
   value = newValue;
   sendChangeMessage (false);
}

其次,在创建Value对象时,传入指向此类的新实例的指针,如

Value myValue(new EagerValueSource());

然后完全按照你原来的方式使用Value对象,除非在调用myValue的{​​{1}}方法时通知监听器,不管这实际上是否为新值或不。