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

KQS*_*KQS 10 matlab matlab-figure matlab-class matlab-hg2

背景

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

addlistener(gca, 'YLim', 'PreSet', @(src,ev_data) disp(ev_data.NewValue))
Run Code Online (Sandbox Code Playgroud)

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

使它成为一个PreSet(而不是PostSet)监听器是有用的,因为我可以检查新值是否与旧值相同,从而避免在不必要时重新计算这些统计信息.

问题

但是,这在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]
Run Code Online (Sandbox Code Playgroud)

在R2014b中,我们似乎错过了这个NewValue领域:

K>> ev_data
ev_data = 
  PropertyEvent with properties:

    AffectedObject: [1x1 Axes]
            Source: [1x1 matlab.graphics.internal.GraphicsMetaProperty]
         EventName: 'PreSet'
Run Code Online (Sandbox Code Playgroud)

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

Muh*_*eem -1

属性 meta.property 对象包含属性的 set 和 get 方法的函数句柄。SetMethod 属性包含属性的 set 方法的函数句柄,GetMethod 属性包含属性的 get 方法的函数句柄。希望这个链接能帮助你