У меня есть 3D-график, и я хотел бы использовать среднюю клавишу нажатия и удерживания для его поворота, но вращение немедленно отключается при отпускании средней клавиши
ниже приведен фрагмент кода
obj=plot3(...); % any 3d plot command
set(obj,'ButtonDownFcn',@startrotate);
function startrotate(src,evnt)
if strcmp(get(gcf,'SelectionType'), 'extend')
rotate3d on;
set(gcbf,'WindowButtonUpFcn',@stoprotate);
return;
end
function stoprotate(src,hrot)
if strcmp(get(gcf,'SelectionType'), 'extend')
rotate3d off;
set(gcbf,'WindowButtonUpFcn','');
end
однако, я получаю сообщение об ошибке:
Warning: Setting the "WindowButtonUpFcn" property is not permitted while this mode is active.
, когда rotate3d
включен, есть ли способ зафиксировать событие «вверх по кнопке» на рисунке matlab / gui window?
Обновление 03/10/2020 Следуя предложению @Hoki, я внес следующие изменения
function startrotate(src,evnt)
if strcmp(get(gcf,'SelectionType'), 'extend')
disp('start rotate');
h=rotate3d;
h.ActionPostCallback= @stoprotate;
h.Enable = 'on';
return;
end
function stoprotate(src,hrot)
if strcmp(get(gcf,'SelectionType'), 'extend')
disp('stop rotate');
h=rotate3d;
h.Enable='off';
end
, но получил ошибку "The current mode can not be interrupted
«. Похоже, я не могу отключить вращение в обратном вызове ActionPostCallback. Можно ли как-нибудь отключить вращение, когда средняя кнопка нажата?