在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'
它去了哪里?!当然必须有一种方法来访问它。如果您无法访问您尝试将其设置为的新值,则属性预设事件处理程序将毫无用处。
答案 0 :(得分:-1)
属性meta.property对象包含属性set和get方法的函数句柄。 SetMethod属性包含属性set方法的函数句柄,GetMethod属性包含属性get方法的函数句柄。 希望这个link可以帮助你提高