videojs暂停时显示大按钮_MATLAB GUI:动画演示中暂停功能的设计

其实这个内容在之前的三体运动的那篇推文(点击此处跳转)中就讲过,不过前段时间后台有同学在问我,而且有两周没更新推送了,就以这个主题来写篇推送。


先简单说一下思路:

  • 把这个暂停按钮设计成togglebutton

  • 把变化的步长放到这个togglebuttonUserData

  • 点击开始时,执行一个死循环,每次循环都获取一下暂停按钮的UserData值,把这个值作为动态显示数据的变化步长。

  • 点击暂停按钮时,如果按钮被按下了则修改其UserData的值为0,这样步长就不变了,也就相当于把动画暂停了

  • 再次点击该按钮时,按钮弹起,则修改其UserData的值为原来的步长。


function MainFigure()
clc
close all% 创建主窗口
hMain = figure('NumberTitle', 'off', 'Name', '暂停功能Demo', 'Menubar', 'none', 'Toolbar', 'none');% 创建总布局
lay = uiextras.VBox('Parent', hMain);% 创建子布局1
lay1 = uiextras.HBox('Parent', lay);% 创建子布局2
lay2 = uiextras.HBox('Parent', lay);% 创建坐标系
axMain = axes('Parent', lay1, 'NextPlot', 'replace', 'XTick', [], 'YTick', []);
lay1.Widths = -1;% 创建开始按钮
start_btn = uicontrol('Parent', lay2,...'Style', 'pushbutton', ...'String', '开始');% 创建暂停按钮
pause_btn = uicontrol('Parent', lay2,...'Style', 'togglebutton', ...'String', '暂停', ...'UserData', 0.001);% 设置布局2中的控件的宽度
lay2.Widths = [-1, -1];% 设置总布局
lay.Heights = [-1, 32];% 设置回调函数
start_btn.Callback = {@callback_start_btn, pause_btn, axMain};
pause_btn.Callback = {@callback_pause_btn};endfunction callback_start_btn(~, ~, pause_btn, ax)
x = -2 : 0.01 : 2;
p = 0.001; % 幂的初始值while trueif p > 4 || p < 0
pause_btn.UserData = -pause_btn.UserData;end % 获取幂的变化步长
p = p + pause_btn.UserData% 计算当前幂运算后的函数值
y = abs(x).^p;plot(x, y, 'Parent', ax);pause(0.001)
drawnowendendfunction callback_pause_btn(this, ~)if this.Value == 1
this.UserData = 0;
this.String = '继续';else
this.UserData = 0.001;
this.String = '暂停';endend

本来还录了个视频说一下GUI制作的过程,但是录完后自己看了一遍发现太渣了,表达能力太差了。。。。。。。大家就根据思路看看代码把。

主要是让变化步长变为0,就实现了暂停的这一思路。当然还有其他方法也能做,只是我感觉这样方便点0f8798472d11ee1027c77d18a118a228.png


--END--

91ed49cf69016e9f33eb6e54d86f5a07.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值