多个属性侦听器等待两者触发回调

时间:2015-07-17 10:43:50

标签: matlab properties callback listeners

我在Matlab遇到有关房产听众的麻烦。我已在YLim触发的轴的PostSeth = addlistener(myaxes,{'XLim','YLim'},'PostSet',@myfunc); 属性中添加了一个监听器:

x

现在我希望我的程序在两个属性都发生变化之后做一些事情,或者只有一个属性发生了变化,但在后一种情况下我必须确保另一个没有变化。

在轴上使用缩放工具时,属性始终按照y,然后XLim的顺序更改。所以在这种情况下我不会有问题,但有时我会以编程方式设置YLimXLim属性并希望触发相同的功能。不知怎的,我必须能够判断这两个属性中是否只有一个触发了侦听器或两者都触发了。

在当前阶段,我的回调执行两次:一次用于YLim,一次用于com.android.internal.telephony 。我希望它只执行一次,而且在我知道这两个属性没有进一步改变之后。你知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

我不相信可以直接检测“同时”set,因为实际的属性分配,而不仅仅是PostSet事件,是单独执行的,没有其他信息是传递给PostSet回调,让你知道另一个回来。在第一个回调中停在断点处,轴完全更新到新的XLim,而没有任何迹象表明即将发生更改YLim

根据您对代码的使用方式和优先级的假设,可以采用多种方法组合变通方法。我能想到的所有内容至少使用以下原则之一:

  • 在某个阶段使用计时器,以允许可能的YLim分配在完成XLim PostSet回调的工作之前触发第二次回调
  • 创建一个自定义例程,用于分配XLim而不YLim,以便在某种程度上区别于缩放工具等内容所做的分配
  • 利用缩放工具首先设置XLimMode属性,无论其值是否有变化这一事实。如果XLim的值已经XLimMode,则以编程方式设置manual将不会设置webView.evaluateJavascript(yourScript,null);