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') が呼び出されると、次の 2 つのいずれかが発生します: Figure へのハンドルが失われるか、イベント ハンドラーがデフォルト値を取得します。どちらかわかりませんが。したがって、次のコードを追加して、失われたハンドラーを独自のコールバック関数に再割り当てできます。

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