我正在尝试在MATLAB指南中制作一行的动画。我正在尝试使用计时器来更新情节。
以下是我的计时器代码。
handles.startPos = -2.5;
handles.line_init =0;
cla(handles.axes1);
guidata(hObject, handles);
handles.timer = timer('Period', 1.0 / 2, ...
'TimerFcn', @(~,~)update_line(handles.startPos,hObject), ...
'ExecutionMode', 'fixedRate');
以下是我的 update_line 功能
的代码function p = update_line(x_cor,hObject)
handles = guidata(hObject);
if (handles.line_init==1)
delete(handles.line)
end
axes(handles.axes1)
p = plot3([handles.startPos handles.startPos+0.5],[0 0],[0 0],'r','LineWidth',4);
handles.line = p;
handles.line_init=1;
disp(handles.startPos)
handles.startPos = handles.startPos+0.5;
guidata(hObject,handles)
变量“handles.startPos”正在更新。但情节没有得到更新。它只显示带有“handles.startPos”的初始值的图,而不是更新的图。但是如果我再次停止并启动计时器,则使用“handles.startPos”的新值更新绘图。但是,它再次没有得到更新,它保持不变。
答案 0 :(得分:0)
你是否正在启动计时器?
start(handles.timer)
此外,代码不会按原样运行 - handle.axes1设置为什么?
如果我使用以下内容,它适用于我:
handles.axes1 = 0
handles.startPos = -2.5;
handles.line_init =0;
cla(handles.axes1);
hObject = figure
handles.axes1 = gca
guidata(hObject, handles);
handles.timer = timer('Period', 1.0 / 2, ...
'TimerFcn', @(~,~)update_line(handles.startPos,hObject), ...
'ExecutionMode', 'fixedRate');
start(handles.timer)