Re: [問題] GUI的滑鼠事件
※ 引述《dragonace ()》之銘言:
: 書上看到的一個例子:
: function mouse01(action)
這裡表示這個函數的名字是mouse01
使用函數必須同時給定一個"action"(字串)輸入
: % mouse01: 本例展示如何設定滑鼠事件的反應指令
: if nargin==0, action='start'; end
這行程式的意思是
當你程式呼叫 mouse01 且沒有給定任何輸入字串時
[[[程式碼為 mouse01 ]]]
函數必須輸入的action字串令他等於"start"
因為action='start' 所以在下面的switch裡
函數會先執行case 'start' 裡的程式內容
: switch(action)
: case 'start' % 開啟圖形視窗
: axis([0 1 0 1]); % 設定圖軸範圍
: box on; % 將圖軸加上圖框
: title('Click and drag your mouse in this window!');
: % 設定滑鼠按鈕被按下時的反應指令為「mouse01 down」
: set(gcf, 'WindowButtonDownFcn', 'mouse01 down');
^^^^^^^^^^^^^^^^^
這行的意思如同%裡說明的 :
如果在目前視窗有滑鼠按鍵被按下時執行mouse01 down這個程式
mouse01是函數名 down是mouse01這個函數執行時必須給定的輸入字串
發現沒 mouse01不就是目前自己這個函數嗎
所以他是自己呼叫自己
因為要執行mouse01 輸入字串是down
也就是說 action='down'
所以要執行switch的case 'down'
也就是正下方的那些內容
: case 'down' % 滑鼠按鈕被按下時的反應指令
: % 設定滑鼠移動時的反應指令為「mouse01 move」
: set(gcf, 'WindowButtonMotionFcn', 'mouse01 move');
: % 設定滑鼠按鈕被釋放時的反應指令為「mouse01 up」
: set(gcf, 'WindowButtonUpFcn', 'mouse01 up');
: % 列印「Mouse down!」訊息
: fprintf('Mouse down!\n');
: case 'move' % 滑鼠移動時的反應指令
: currPt = get(gca, 'CurrentPoint');
: x = currPt(1,1);
: y = currPt(1,2);
: line(x, y, 'marker', '.', 'EraseMode', 'xor');
: % 列印「Mouse is moving!」訊息及滑鼠現在位置
: fprintf('Mouse is moving! Current location = (%g, %g)\n', ...
: currPt(1,1), currPt(1,2));
: case 'up' % 滑鼠按鈕被釋放時的反應指令
: % 清除滑鼠移動時的反應指令
: set(gcf, 'WindowButtonMotionFcn', '');
: % 清除滑鼠按鈕被釋放時的反應指令
: set(gcf, 'WindowButtonUpFcn', '');
: % 列印「Mouse up!」訊息
: fprintf('Mouse up!\n');
: end
: 第一個問題是set(gcf, 'WindowButtonDownFcn', 'mouse01 down');
: 滑鼠被按下的指令不是存在'mouse01 down'這個字串嗎?
同上解說
滑鼠按下後要執行的函數不是存在'mouse01 down'這個字串
'mouse01 down'這個不是字串的意思
' '範圍裡的是要執行的function
'move''down''down'這些都是對mouse01來說所要輸入的字串參數
: 可是接下來的case的事件都是'move''down''down'這些
: 所以set後面的第三個參數中 前面必須是這個function名稱 後面才是存的指令嗎??
順便說明
set(gcf, 'WindowButtonMotionFcn', '');
^^^^^^
這裡什麼都沒有 也就是說什麼函數都不要執行
等於是說不要有任何動作 就是%裡清除動作的意思了~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.168.183.43
推
07/21 23:04, , 1F
07/21 23:04, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章