我正在制作一个用户界面,它的输入代表一个Angular ,可以用uicontrol滑块元素进行设置。预期Angular 可以环绕圆,因此我希望当用户增加Angular 超过最大值(2 pi)时,拇指和值将“增加”到零(并且类似地,当用户减小Angular 超过最小值(零)时,拇指和值将减小到2 pi,因此通过环绕间隔而正常表现。
function simplest_working_example
h1=figure();
init_phi1=45;
locinfo.phi1=uicontrol('Parent',h1,'style','slider','Min',0,'Max',360,'Value',init_phi1,'Position',[20 20 500 20],'Callback',{@update_fcn});
function update_fcn(~,~)
S1=[0 0];
l1=2;
E1=[l1*cos(locinfo.phi1.Value*2*pi/360) l1*sin(locinfo.phi1.Value*2*pi/360)];
plot([S1(1) E1(1)],[S1(2) E1(2)],'o-');hold on
xlim([-10 10]); ylim([-10 10]);axis square
hold off
end
end
字符串
我尝试编辑滑块回调函数,但是当用户单击向上/向下箭头并且滑块已经处于最大/最小值时,它不会触发(参见this stackoverflow question)。有没有什么技巧可以做到这一点,希望没有文档化的Java层。
1条答案
按热度按时间bq8i3lrv1#
您可以在
update_fcn(~,~)
的开头添加以下内容:字符串
这会产生环回,但如果您连续按下箭头,则需要再次单击它。