2

1-下面的代码显示了按下的键的属性。按下一个键试一试,观察结果。

figure('Name','Press keys to put event data in Command Window',...
         'KeyPressFcn',@(obj,evt)disp(evt));

你会看到这样的输出(例如按下空格键)

    Character: ' '
     Modifier: {1x0 cell}
          Key: 'space'

2-现在只需在上面添加以下代码行(或者在清除工作区之前简单地执行它)

    cameratoolbar('SetMode','orbit');

现在按任意键,没有任何反应!控制权将不再转移到您的服装回调功能!(这里:@(obj,evt)disp(evt))。

WindowButtonDownFcn、WindowButtonUpFcn 也会发生同样的事情。

我怎样才能解决这个问题?我希望能够在执行 cameratoolbar('SetMode','orbit') 后处理 KeyPressFcn 或 WindowButtonDownFcn。

4

1 回答 1

1

我找到了答案:一旦调用 cameratoolbar('SetMode','orbit') 会发生以下两种情况之一:图形的句柄丢失或事件处理程序获取其默认值。我不确定是哪一个。因此,我们可以添加以下代码,将丢失的处理程序重新分配给我们自己的回调函数:

set(gcf,'KeyPressFcn',@(obj,evt)disp(evt))
于 2012-08-03T20:19:43.980 回答