所以我使用AppDesigner制作了一个GUI,它看起来像:
两个白框是App Designer的实际UITextArea元素。以上是应用程序执行后的时间,计时器开始倒计时并在UITextArea上显示时间。我用于计时器的代码如下:
methods (Access = private)
function countdown(app)
while true
try
minute = 29;
set(app.TextArea1, 'Value', num2str(minute));
seconds = 0;
set(app.TextArea2, 'Value', num2str(seconds));
while minute > 0
seconds = 59;
while seconds > 0
set(app.TextArea2, 'Value', num2str(seconds));
pause(1);
seconds = seconds - 1;
end
minute = minute - 1;
set(app.TextArea1, 'Value', num2str(minute));
end
catch
break;
end
end
end
由于我希望计时器在启动时开始计时,所以我在启动时调用了该函数:
function startupFcn(app)
app.countdown;
end
但是,我现在遇到的问题是我有这个按钮,按下它时,我希望计时器重置回其原始值并再次开始计时。
function ResetButtonPushed(app, event)
app.countdown
%other process executes here onwards.
.
.
end
但是问题是,我希望调用app.countdown之后的其他进程继续进行,在我的情况下,程序将等待app.countdown执行完毕,然后再移至下一行。有解决方法吗?
答案 0 :(得分:0)
您可以添加属性ResetFlag = 0
。在您的countdown
方法中,您必须添加一个if
条件并运行一次过程。
properties (Access = private)
ResetFlag = 0
end
function countdown(app)
while true
try
if app.ResetFlag
disp('My Proccess');
app.ResetFlag = 0;
end
...
在ResetButton回调函数中将标志设置为1。
function ResetButtonPushed(app, event)
app.ResetFlag = 1;
app.countdown();
end