在等待鼠标操作时阻止KeyPressFcn

时间:2014-04-23 23:23:50

标签: matlab user-interface matlab-guide

我的程序是一个问题/答案任务:

- 参与者必须按空格键盘才能播放声音 - 参加者必须按下两个按钮之一(鼠标) - 参与者必须按空格键才能播放声音 ...

问题是,我想只允许在空格键上按一次,因为用户可以在空间上按很多时间并播放声音x次。 如何在等待鼠标响应时阻止figure1_KeyPressFcn,一旦我们得到鼠标响应,我们就会重新激活该功能?

 function figure1_KeyPressFcn(hObject, eventdata, handles)
     switch eventdata.Key
        case 'space'          
                %% processing  x task  
                %playing sounds 1000 ms
                soundsc(y,Fs);
                guidata(hObject, handles); %%// Save handles data
            otherwise
           disp('error');

    end
end


function pushbutton1_Callback(hObject, eventdata, handles)
%processing task
guidata(hObject, handles);  %%// Save the handles data
end

function pushbutton2_Callback(hObject, eventdata, handles)
%processing task
guidata(hObject, handles);  %%// Save the handles data
end

1 个答案:

答案 0 :(得分:2)

你可以使用全局标志,如下所示:

global clicked;
clicked = true;

然后,在您的figure1_KeyPressFcn函数中,只有在用户点击后才会调用switch,如下所示:

global clicked;
if clicked
    switch eventdata.Key
        case 'space'          
            clicked = false;
            %% processing  x task  
            ...
    end
end

pushbutton?_Callback'上添加以下内容:

global clicked;
clicked = true;

clicked设置为true并允许figure1_KeyPressFcn再次处理空格键。