大图片的目标是以某种速率连续绘制图像序列,并在按下按钮时暂停该过程。然后在敲击空格键或按下按钮或其他任何东西时恢复该过程。这是我到目前为止的代码,对于循环的每次迭代都有一个简单的rand/pause(0.5)
过程(而不是绘制我的图像)。
我的问题是:
按下按钮时似乎调用ButtonCallback
,并且回调函数中DoPause
设置为1,但主函数DoPause
中的PauseButtonTest
未更改。如何更改此变量以执行if
循环中的while
语句。
感谢任何帮助。感谢。
function PauseButtonTest
DoPause = 0;
hb = uicontrol('Style','Pushbutton','String','Pause','FontWeight','Bold', ...
'Callback',@ButtonCallback,'Unit','Normalized','Position',[0 0 1 1]);
while ishandle(hb)
if DoPause
disp('You pushed the button')
pause
DoPause = 0;
set(hb,'Enable','On')
drawnow
end
% Computations/Plot successive figures/etc.
rand
pause(0.5)
end
end
function ButtonCallback(hObj, event)
DoPause = 1;
disp('You are in ButtonCallback')
disp(['DoPause = ' num2str(DoPause)])
set(hObj,'Enable','off')
end
答案 0 :(得分:1)
只需在function ButtonCallback(hObj, event) ...
内移动PauseButtonTest
,以便它可以访问其变量(“外部作用域”变量)。将它放在while
循环下方和end
之前的几行中,表示PauseButtonTest
的结束。