如何在MATLAB R2014b中访问PropertyEvent的新值?

时间:2014-12-09 20:09:53

标签: matlab matlab-figure matlab-class matlab-hg2

背景

在MATLAB的早期版本中(例如R2013b),我有一个巧妙的技巧,我会将一个监听器附加到一个轴句柄的YLim属性,这会在轴y限制时通知我改变:

addlistener(gca, 'YLim', 'PreSet', @(src,ev_data) disp(ev_data.NewValue))

我用它来更新第二个数字,它会显示这些轴中可见数据子集的一些摘要统计数据。这太棒了!你放大,第二个数字自我更新。大。

使其成为PreSet(而非PostSet)侦听器非常有用,因为我可以检查新值是否与旧值相同,从而避免在不必要时重新计算这些统计信息。 / p>

问题

然而,在R2014b中,这对我不再适用。我能够附加事件监听器,但是当我触发事件时,我收到此错误消息:

  

类event.PropertyEvent没有合适的方法,属性或字段NewValue。

我认为这与HG2图形系统有关。通过适当的断点,我们可以查看事件数据。在R2013b:

K>> ev_data
ev_data =
    handle.PropertySetEventData

K>> get(ev_data)
              Type: 'PropertyPreSet'
            Source: [1x1 schema.prop]
    AffectedObject: [1x1 axes]
          NewValue: [0.5000 220.5000]

在R2014b中,我们似乎错过了NewValue字段:

K>> ev_data
ev_data = 
  PropertyEvent with properties:

    AffectedObject: [1x1 Axes]
            Source: [1x1 matlab.graphics.internal.GraphicsMetaProperty]
         EventName: 'PreSet'

它去了哪里?!当然必须有一种方法来访问它。如果您无法访问您尝试将其设置为的新值,则属性预设事件处理程序将毫无用处。

1 个答案:

答案 0 :(得分:-1)

属性meta.property对象包含属性set和get方法的函数句柄。 SetMethod属性包含属性set方法的函数句柄,GetMethod属性包含属性get方法的函数句柄。 希望这个link可以帮助你提高