如何通过事件侦听器在Matlab gui中的动画行中添加数据点?

Pratik Singhal

我正在使用GUIDE在Matlab中制作一个GUI应用程序。我有一些轴,可以在单击按钮时在其上绘制一些点。现在,我想使用动画线在相同的轴上绘制线。要添加到动画行的数据点来自事件。因此,我需要在事件监听器中添加数据点。我想知道我该怎么做,因为该事件侦听器无权访问动画行。以下是到目前为止的代码。

单击按钮时会调用此功能-

function startButton_Callback(~, ~, handles)
    x = randi(100, 20);
    y = randi(100, 20);
    plot(x, y, 'o');
    la = newClass;
    addlistener(la,'statusAnnouncement',@StatusListener);

这是在事件中被调用的函数

function StatusListener(obj, eventData)
    h = animatedline;
    addpoints(h,eventData.coordinate(1),eventData.coordinate(2));
    drawnow

仅显示使用绘图绘制的点。如何显示动画线?另外,我在命令窗口上没有任何错误。

Suever

您可以通过两种方法使侦听器访问该animtedline对象。

  1. 您可以定义StatusListener为一个子功能startButton_Callback

    function startButton_Callback(~, ~, handles)
    
        h = animatedline;
    
        la = newClass;
        addlistener(la,'statusAnnouncement',@StatusListener);
    
        %// This as a subfunction so it can "see" h
        function StatusListener(src, evnt)
            h.addpoints(evnt.coordinate(1), evnt.coordinate(2));
        end
    end
    
  2. 通过animtedline匿名函数对象传递给回调函数

    function startButton_Callback(~, ~, handles)
        h = animatedline;
    
        la = newClass;
    
        %// Use the callback but add h as an additional input argument
        addlistener(la, 'statusAnnouncement', @(s,e)StatusListener(s,e,h))
    end
    
    %// Note the additional input argument here
    function StatusListener(obj, evnt, h)
        h.addpoints(evnt.coordinate(1), evnt.coordinate(2))
    end
    
  3. 更新匿名函数animatedline 内部

    function startButton_Callback(~, ~, handles)
        h = animatedline;
    
        la = newClass;
    
        %// Don't define a separate function and just do the update here
        addlistener(la, 'statusAnnouncement', @(s,e)h.addpoints(e.coordinate(1), e.coordinate(2)))
    end
    
  4. 存储animatedline在对象guidataappdata你的身材。

    function startButton_Callback(~, ~, handles)
    
        h = animatedline;
    
        %// Store the handle within the appdata of the figure
        setappdata(gcbf, 'MyAnimatedLine', h)
    
        la = newClass;
        addlistener(la,'statusAnnouncement',@StatusListener);
    end
    
    function StatusListener(obj, evnt)
        %// Get the handle from the appdata of the figure
        h = getappdata(gcbf, 'MyAnimatedLine');
        h.addpoints(evnt.coordinate(1), evnt.coordinate(2))
    end
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在matlab中向数据结构添加数据点

如何通过JavaScript将事件侦听器添加到body元素?

如何通过ExecuteScript添加我自己的侦听器来捕获“加载”事件?

如何为我们通过 javascript 创建的元素添加事件侦听器?

删除通过绑定添加的事件侦听器

通过addEventListener添加的事件侦听器被多次调用

如何在ggplot曲线中添加数据点?

反应。如何在创建的侦听器中删除事件侦听器?

如何从reactjs中的文档中删除事件侦听器

如何将事件侦听器添加到动画变换旋转中?

如何从类方法中删除事件侦听器

如何从正在卸载的背景中删除事件侦听器?

如何删除Aurelia中的事件侦听器?

如何正确删除 vue 3 中的事件侦听器

如何在EaselJS对象中删除事件侦听器

如何在 JavaScript 中停用 beforeunload 事件侦听器

如何阻止事件侦听器减慢画布动画的速度?

如何向 React 组件添加事件侦听器?

如何为所有滚动事件添加侦听器?

如何为活动添加事件侦听器AnyChart 8

如何在的IntelliJ插件添加事件侦听器?

如何让 DOM/事件侦听器知道新添加的节点?

如何删除 iFrame 添加的 beforeunload 事件侦听器?

如何使用jquery .each()添加单个事件侦听器?

Sweet Alert - 如何添加事件侦听器?

如何从 vanilla JS 事件侦听器修改 Vue 数据?

如何通过HOC添加onMouseDown侦听器

Java 中的事件(侦听器)

类中的 Javascript 事件侦听器