Hoe to implement a listener that deletes its calling object?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
royk
am 12 Jul. 2020
Kommentiert: Walter Roberson
am 17 Jul. 2020
I would like to trigger DELETE of an IMAGES.ROI object upon ROIMoved event.
I am trying:
figure(1);clf;axis([0 100 0 100])
h = images.roi.Rectangle(gca,'position',uint16([10 20 10 20]));
addlistener(h,'ROIMoved',@(s,~)delete(s))
when the rectangle is moved it gets deleted (as desired) but it also issues an error:
Error using images.roi.Rectangle/MarkDirty
Value must be a handle.
Error in images.roi.internal.ROI/stopDrag
Error in images.roi.internal.ROI
What would be the right way for a listener to delete its object without invoking an error?
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 12 Jul. 2020
Bearbeitet: Walter Roberson
am 12 Jul. 2020
The right way would probably be not to do that at all.
Instead, put in a position constraint that prevents the ROI from moving and use a different method to delete the ROI if it must be deleted. In particular, do not delete the ROI from within a listener to the ROI (but you could delete the ROI from within a listener to mouse presses or key presses.)
5 Kommentare
Walter Roberson
am 17 Jul. 2020
Yes, the callback function can delete the timer. But if you are doing this a bunch of time, it would be more efficient to just keep one timer around and change its callback (or properties), configure it to fire once, and start it as needed.
Weitere Antworten (1)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!