背景
在以前的 MATLAB 版本(例如 R2013b)中,我有一个巧妙的技巧,我将一个侦听器附加到轴句柄的YLim
属性,它会在轴 y 限制发生更改时通知我:
addlistener(gca, 'YLim', 'PreSet', @(src,ev_data) disp(ev_data.NewValue))
我正在使用它来更新第二个图,该图将显示这些轴中可见数据子集的一些汇总统计信息。那太棒了!您放大,第二个图形会自行更新。伟大的。
使其成为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]
在 R2014b 中,我们似乎缺少该NewValue
字段:
K>> ev_data
ev_data =
PropertyEvent with properties:
AffectedObject: [1x1 Axes]
Source: [1x1 matlab.graphics.internal.GraphicsMetaProperty]
EventName: 'PreSet'
它去哪儿了?!当然,必须有一种访问它的方法。如果您无法访问您尝试将其设置为的新值,则属性预设事件处理程序将毫无用处。