队列addlistener事件或事件在美国东部时间的地方
3视图(30天)
显示旧的评论
每次xlim更改我想运行一些代码。
情节(1:10 0)
L = addlistener (gca),“XLim”,“PostSet”,@my_callback);
如果我用一个侦听器,我似乎错过事件回调是否仍在运行。
因此我想队列属性改变事件回调。这是可能的吗?
另外,有可能回调函数队列在EDT(事件分发线程),这样任何更改不想念?
我能想出的唯一真正丑陋的解决方案是使用一个java类的“PropertyChangeCallback”,因为它似乎对被设置在Matlab中,而不是uicontrol时不要把回调(我认为)通过Matlab改变他们的价值观。
更新:
看来,这是依赖于回调代码。
我曾经是这样的:
disp(现在)
t =抽搐;
暂停(3)
toc (t);
如果你像一个水平放大2 - 3次(很快),只有第一个侦听器回调将运行,即使你已经改变了xlim很多次了。
然而如果代码是:
disp(现在)
t =抽搐;
兰德(r = 1 e8);
toc (t);
然后渲染不会发生,直到代码执行完成。我在这里使用rand()命令导致一个合理的延迟(在我的笔记本电脑1.5 s)
换句话说听众的阻塞行为取决于回调代码。
错过的事件也只会出现在用户输入。在运行代码的事件按顺序运行。例如,试试这个“暂停”版本的回调。在我的例子中我得到了三个事件,而不是1。
集(gca),“xlim”10 [0]);
集(gca),“xlim”20 [0]);
集(gca),“xlim”30 [0]);