【发布时间】:2012-02-16 11:50:39
【问题描述】:
我正在编写一个程序,在该程序中,有时会在屏幕上绘制并显示图形。然后用户需要按“y”或“n”来接受或拒绝图表。我当前的解决方案使用 PsychToolbox(实际解决方案不需要),其中包括一个名为“KbCheck”的命令,该命令在调用所有键盘按钮的状态时进行检查。我的代码如下所示:
function [keyPressed] = waitForYesNoKeypress
keyPressed = 0; % set this to zero until we receive a sensible keypress
while keyPressed == 0 % hang the system until a response is given
[ keyIsDown, seconds, keyCode ] = KbCheck; % check for keypress
if find(keyCode) == 89 | find(keyCode) == 78 % 89 = 'y', 78 = 'n'
keyPressed = find(keyCode);
end
end
问题是,系统确实会“挂起”,直到按下某个键。理想情况下,我将能够滚动、缩放并与屏幕上绘制的图表进行一般交互,这样我就可以真正决定是否要按“y”或“n”!
我已尝试添加“drawnow;”进入上面的 while 循环,但这不起作用:我仍然无法与绘制的图交互,直到 我接受或拒绝了它们。
解决方案不必使用 PsychToolbox;我想还有很多其他的选择吗?
谢谢
【问题讨论】:
-
keyboard 命令可用于停止执行。
-
这将是一个合适的解决方法,但我更愿意让它对用户更友好;即使用“键盘”,要接受图表,我必须输入“变量名称 = 'y'; return;”
-
使用“输入”功能,您只需要输入 y 或 n,但它确实要求您按 Enter。