四个信号灯分别代表四个方向,信号灯下面显示框对应剩余的秒数,time为绿灯持续时间,下拉框对应哪两边的灯最先亮起。
函数如下,两个color函数对应两种状态
methods (Access = private)
function results = func(app,value)
set(app.upEditField,'Value',value);
set(app.downEditField,'Value',value);
set(app.leftEditField,'Value',value);
set(app.rightEditField,'Value',value);
end
function results = color1(app)
app.upLamp.Color='g';
app.downLamp.Color='g';
app.leftLamp.Color='r';
app.rightLamp.Color='r';
end
function results = color2(app)
app.upLamp.Color='r';
app.downLamp.Color='r';
app.leftLamp.Color='g';
app.rightLamp.Color='g';
end
end
按钮回调函数如下
function ButtonPushed(app, event)
value=app.timeEditField.Value;
if value<=0
uialert(app.UIFigure,"请输入大于0的数","error")
pause%等待用户任意键继续
end
func(app,value);
if app.DropDown.Value=="up_down"
%这里必须是双引号,不然会显示矩阵维度不一致
b=0;
color1(app);
else
b=1;
color2(app);
end
a=value;
while true
pause(1)
a=a-1;
func(app,a);
if a<=0
a=value;
func(app,value);
if mod(b,2)==0
color2(app);
else
color1(app);
end
b=b+1;
end
end
end
uilabel后如果没有pause,程序就会一直执行下去。
用下拉框的value时,要有双引号
因为红绿灯显示整数,因此每过1秒显示一次即可,不用一直监测目前的时间,可以暂停1秒。