2016-07-12 6 views
1

В моем скрипте Matlab я хочу, чтобы у пользователя было 5 секунд, чтобы ответить на вопрос, нажав любую кнопку мыши для правды или без щелчка мыши на false. Если пользователь нажимает кнопку мыши, сценарий продолжается. Если через 5 секунд без щелчка мыши, сценарий также продолжается. Любая идея, как это сделать?Matlab: подождите определенное время для щелчка мышью, затем продолжайте

Я попытался [x,y,MouseClick]=ginput(1); в tictoc цикла, и записать переменную MouseClick но сценарий делает паузу в ginput пока что-то вводят, и он ждет там навсегда. Мне нужно, чтобы он продолжался через 5 секунд, если нет ввода.

Вот код:

for i=2:26 

    % display current letter 
    CurrentLetter=Data{i}{RowSelect}; 
    letter = text (0.3, 0.5, CurrentLetter, 'fontsize', 400, 'color', 'r'); 
    pause(0.5); 
    delete (letter); % blank screen 

    % allow 5 seconds to collect mouse click 
    tic; 
    MouseClick=0; 
    while (toc<=5); 
     pause(0.1); 
     [x,y,MouseClick]=ginput(1); 
     if MouseClick~=0 
      break; % stop loop if a mouse click has been pressed 
     end 
    end 
% add up the scores and write them to an xls file 
end 
+1

Как вы побуждающие пользователей с вопросом? – excaza

+0

Пожалуйста, отредактируйте свой вопрос, чтобы включить код, который вы используете, для создания окна/рисунка/графического интерфейса пользователя, когда пользователь получает запрос. – Matt

ответ

0

Вы можете позвонить waitforbuttonpress ждать входа - либо щелчок мыши или нажатие клавиши. Вы также можете заранее зарегистрировать таймер, который будет имитировать событие нажатия клавиши с 5-секундной задержкой. По значению, возвращенному с waitforbuttonpress, вы можете указать, нажал ли пользователь кнопку мыши или был ли это событие нажатия клавиши (либо запускается вручную пользователем, либо автоматически по таймеру).

figure(); 
t = timer('TimerFcn', 'java.awt.Robot().keyPress(java.awt.event.KeyEvent.VK_SPACE);', 'StartDelay', 5); 
start(t); 
k = waitforbuttonpress(); 
if k == 0 
    display('user made a mouse button click!'); 
else 
    display('5 seconds elapsed, or user pressed a button!'); 
end 
display('doing something...'); 
0

Вы могли бы работать с uiwait и резюме: Я только что у вас есть кнопка с обратным вызовом сортов.

Итак, вы создаете кнопку и все еще в графическом интерфейсе и звоните uiwait(gcf, 5).

В кнопку обратного вызова вы делаете то, что вы делаете, вероятно, войдя в ответ где-то, и в конце концов вы звоните uiresume(src.parent)