我正在编写一个matlab程序,我正试图将我的句柄结构传递给所有我的回调。唯一的问题是我正在使用GUIDE而且我不能将句柄作为参数传递给我创建的函数:
%The proper slider callback: Deleted the default within GUIDE
function sliderContValCallback(hFigure,eventdata)
%test it out- get the handles object and dispay the current value
%getappdata(handles.video_loader_button,'handles');
handles = guidata(hFigure);
handles.currentFrame = floor(get(handles.slider,'Value'));
set(handles.frameBox,'String',num2str(handles.currentFrame));
fprintf('slider value: %f\n',get(handles.slider,'Value'));
updateAxes(handles);
问题在于,我现在“处理”处理的方式是,它与其他UI对象回调函数使用的句柄实际上并不相同。我还想过用getappdata
传递句柄,但你需要句柄才能做到这一点,所以我被卡住了。这已经引起了一些问题,如何解决这个问题的任何帮助都会很棒,谢谢!
编辑:
我删除了GUIDE生成的回调,因此我可以使用sliderContValCallback
作为函数句柄并在此处调用它:
handles.sliderListener = addlistener(handles.slider,'ContinuousValueChange',...
@(hFigure,eventdata) sliderContValCallback(hObject,eventdata));
用于连续更新,因为用户拖动滑块(这用于滚动视频,并且运行良好)。
我质疑这个的真正原因是因为我打电话的时候:
allCoords = getappdata(handles.axes1,'mydata');
coordsXYZ = allCoords.clickcoordinates; %Do this to access the field 'allCoords' within 'mydata'
curIndex = allCoords.currentIndex;
if numel(coordsXYZ)>0
for i = 1:length(coordsXYZ)
coordXY = [coordsXYZ(i).x,coordsXYZ(i).y];
%viscircles(handles.axes1,coordXY,1,'EdgeColor','r');
hold on;
plot(coordsXYZ(i).x,coordsXYZ(i).y,'o');
end
end
一切正常但由于某种原因生成了一个数字,该情节被绘制到handles.axes1
上的图像。这很奇怪,因为当我通过移动它来更新滑块时,这个随机数字会弹出。