我的程序是一个问题/答案任务:
- 参与者必须按空格键盘才能播放声音 - 参加者必须按下两个按钮之一(鼠标) - 参与者必须按空格键才能播放声音 ...
问题是,我想只允许在空格键上按一次,因为用户可以在空间上按很多时间并播放声音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
答案 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
再次处理空格键。