如何解决是否可以在WindowButtonMotionFcn中使用多个回调?
| 我创建了一个类,该类为构造图中的功能添加了功能。此类为WindowMouseMotion
事件创建一个侦听器;但是,要触发此事件,我必须为该图形的WindowButtonMotionFcn
属性添加一个虚拟回调函数。我首先检查此属性是否已填充。如果不是,则将其设置为不执行任何操作的虚拟回调函数。
无需检查该属性是否已设置,我可以简单地将此虚拟回调添加到任何现有回调中吗?回调属性可以调用多个函数吗?
编辑
当使用handle.listener
方法处理下面给出的WindowButtonMotionEvent
事件时,请确保使用eventdata.CurrentPoint
访问当前鼠标位置。在以这种方式处理WindowButtonMotionEvent
事件之前,该图的CurrentPoint
属性不会得到更新。
解决方法
相关文章可以在Yair Altman的Undocumented MATLAB博客上找到,来自客座博客Matt Mattaker。您所暗示的是回调链接,并引用了博客:
坦白地说,已经编写了代码
以前处理回调
链接,我宁愿戳自己
用叉子在眼里!
幸运的是,该文章中似乎有替代解决方案。使用此处发布的代码段,我能够在不设置ѭ7的情况下执行鼠标移动执行的功能。我向当前图形添加了一个侦听器,如下所示:
myListener = handle.listener(gcf,\'WindowButtonMotionEvent\',...
@(hSource,eventData) disp(\'hello\'));
当我在窗口中移动鼠标时,显示消息“ 9”。
,您可以通过cellfun和feval来做到这一点,如Mathworks网站上所回答:http://www.mathworks.com/matlabcentral/answers/10664-multiple-callback-functions
obj = uicontrol(...,\'style\',\'popupmenu\',...
\'Callback\',@(h,e)(cellfun(@(x)feval(x,h,e),...
{@(h,e)this.myfunc(h),...
@(h,e)this.myfunc2(h),e)this.myfunc2(h)}))
请注意,回调使用cellfun设置为匿名函数,以评估每个处理程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。