我想在我在MATLAB中制作的一个游戏中显示一个十字准线。我尝试使用ginput因为它显示十字准线并读取所点击内容的x和y位置,因此它非常完美。但是,由于它总是等待点击并且我有移动的对象,它会导致在屏幕上创建对象然后不移动。如何在ginput运行并评估点击次数的同时运行循环并继续移动对象?
答案 0 :(得分:0)
与Update figure while waiting for event in Matlab?非常相似
总结一下:ginput不适合实时交互功能,实际上更适合注释工具。查看该图的ButtonDownFcn
属性。该链接还包含一个小例子,说明如何实现这样的东西。为清晰起见,我会在此处复制,但原始赠送金额归pm89和grantnz
% Stop button
uicontrol(...
'Style','pushbutton', 'String', 'Stop',...
'Units','Normalized', 'Position', [0.4 0.1 0.2 0.1],...
'Callback', 'run = 0;');
% Axes
ax = axes(...
'Units','Normalized',...
'OuterPosition', [0 0.2 1 0.8]);
run = 1;
t = 0;
while run
t = t + 0.01; x = t:0.01:t+2;
h = plot(ax, x, sin(x));
set(ax, 'ButtonDownFcn', 'get(ax, ''CurrentPoint'')');
xlim([x(1) x(end)]); ylim([-1 1]);
pause(0.01);
end