バックグラウンド
MATLAB の以前のバージョン (R2013b など) では、軸ハンドルのYLim
プロパティにリスナーをアタッチして、軸の y 制限が変更されたときに通知する巧妙なトリックがありました。
addlistener(gca, 'YLim', 'PreSet', @(src,ev_data) disp(ev_data.NewValue))
これを使用して、これらの軸に表示されるデータのサブセットの要約統計を示す 2 番目の図を更新しました。そしてそれは最高でした!ズームインすると、2 番目の図が更新されます。偉大な。
新しい値が古い値と同じかどうかを確認できるため、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'
どこに行ったの?! 確かにアクセスする方法はあるはずです。設定しようとしている新しい値にアクセスできない場合、プロパティの事前設定イベント ハンドラーは役に立ちません。