作者vwvwvwvw (Jigsaw)
看板MATLAB
标题Re: [问题] GUI的滑鼠事件
时间Thu Feb 27 14:23:38 2014
引用部分原文
请问这个程式如果想要让滑鼠定住时也持续报座标
(以目前的程式要滑鼠移动才会更新位置)
该怎麽做呢?
搜寻过好像没有滑鼠定住时的触发事件 CALLBACK
谢谢!
※ 引述《shaple (耍宝妈)》之铭言:
: ※ 引述《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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.190.15
1F:→ jatj:把最後的座标记住不就好了 02/28 10:01
2F:→ vwvwvwvw:要的并不是座标 而是希望停多久 就报多久 03/04 23:12
3F:→ jatj:if x, y not change then trigger a while loop. done 03/05 12:58
4F:→ vwvwvwvw:定住时没有第二次座标进来更新 所以无法做此判断 03/07 00:24
5F:→ jatj:我是说while(1) 包在外面... 03/07 13:12