我正在尝试创建一个行为如下的程序:
1个按空格
2-“禁用”KeyPressFcn功能
3播放声音
4 - 做一个鼠标动作
5 - 将播放声音
6-再次“启用”KeyPressFcn功能
7-返回1
function figure1_KeyPressFcn(hObject, eventdata, handles)
switch eventdata.Key
case 'space'
set(hObject, 'KeyPressFcn', [])
soundsc(y,Fs);
otherwise
disp('error');
end
end
function pushbutton1_Callback(hObject, eventdata, handles)
soundsc(y,Fs);
set(hObject, 'KeyPressFcn', {@figure1_KeyPressFcn, handles})
guidata(hObject, handles);
end
步骤6不起作用,所以问题是,如何从mousecallback为KeyPressFcn设置hObject?
答案 0 :(得分:1)
所以,有些背景依旧。 hObject不是您设置的属性。它实际上是对象的句柄,它调用了它所使用的函数。所以,当你使用inpushbutton1_Callback时,你实际上是为pushbutton1设置了KeyPressFunction!这就是为什么它只运行一次。相反,试试这个:
set(handles.figure1, 'KeyPressFcn', {@figure1_KeyPressFcn, handles})