Вы можете добиться прерывания воспроизведения, установив свойство Enable
вашего слайдера на off
или inactive
, когда вы нажимаете кнопку воспроизведения, и с помощью функции ButtonDownFcn
, которая останавливает воспроизведение и устанавливает Enable
обратно на on
.
Используя togglebutton
в качестве моей кнопки воспроизведения (другие виджеты управления должны работать до тех пор, пока вы можете сохранить логический флаг в доступном месте), я использовал следующее как Callback
для кнопки:
function playcallback(toggle_button, ~, slider_)
set(slider_, 'Enable', 'inactive'); %slider is disabled
while get(toggle_button, 'Value') %Value is used as flag for playing
current_value = get(slider_, 'Value');
set(slider_, 'Value', rem(current_value + 0.01, 1)); %shift slider (looping)
pause(1/50);
end
set(slider_, 'Enable', 'on'); %done playing, turn slider back on
end
И следующее как ButtonDownFcn
для слайдера:
function stopslide(~, ~, toggle_button)
%play flag off: in playcallback, the while loop stops,
%the slider is enabled and the playcallback function returns
set(toggle_button, 'Value', 0);
end
Вы можете зарегистрировать эти обратные вызовы следующим образом:
set(toggle_button_handle, 'Callback', {@playcallback, slider_handle});
set(slider_handle, 'ButtonDownFcn', {@stopslide, toggle_button_handle});
Предупреждение: если вы начинаетедобавив другие виджеты, взаимодействующие с ползунком / кнопкой воспроизведения аналогичным образом, вы увеличите свои шансы на ознакомление с условиями гонки.