0

我想在我用 MATLAB 制作的一个游戏中显示一个十字准线。我尝试使用 ginput,因为它会显示十字准线并读取所单击内容的 x 和 y 位置,因此非常完美。但是,由于它总是等待点击并且我有移动的对象,它会导致在屏幕上创建对象然后不移动。如何在 ginput 也在运行并评估点击时让循环运行并继续移动对象?

4

1 回答 1

0

非常类似于在 Matlab 中等待事件时更新图?

总结一下:ginput 不适合实时交互功能,实际上更像是一个注释工具。看图的ButtonDownFcn属性。该链接还包括一个小示例,说明您将如何实现这样的事情。为了清楚起见,我将在此处复制,但原始功劳归pm89grantnz

% 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
于 2014-04-29T20:52:49.807 回答