键盘回调和鼠标回调之间的交互

时间:2014-04-24 21:37:29

标签: user-interface matlab matlab-figure matlab-guide

我正在尝试创建一个行为如下的程序:

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?

1 个答案:

答案 0 :(得分:1)

所以,有些背景依旧。 hObject不是您设置的属性。它实际上是对象的句柄,它调用了它所使用的函数。所以,当你使用inpushbutton1_Callback时,你实际上是为pushbutton1设置了KeyPressFunction!这就是为什么它只运行一次。相反,试试这个:

set(handles.figure1, 'KeyPressFcn', {@figure1_KeyPressFcn, handles})