效果: 两个figure的位置都可以任意改变↓↓↓↓↓↓
完整代码:
function cannonball
global cannonballFig1 cannonballFig2 cannonballAxes1 cannonballAxes2
global cannonballTimer
global postionPart1 postionPart2
cannonballFig1=uifigure('units','pixels',...
'position',[15 450 300 200],...
'Numbertitle','off',...
'menubar','none',...
'resize','off',...
'name','cannonball 1.0 | by slandarer',...
'color',[0.95 0.95 0.95]);
cannonballFig2=uifigure('units','pixels',...
'position',[400 150 400 300],...
'Numbertitle','off',...
'menubar','none',...
'resize','off',...
'name','cannonball 1.0 | by slandarer too',...
'color',[0.95 0.95 0.95]);
cannonballAxes1=uiaxes('Units','pixels',...
'parent',cannonballFig1,...
'Position',[0 0 300 200],...
'Color',[0.99 0.99 0.99],...
'Box','on', ...
'XLim',[0 300],...
'YLim',[0 200], ...
'YDir','normal', ...
'XColor',[0.99 0.99 0.99],'YColor',[0.99 0.99 0.99],...
'XTick',[],'YTick',[]);
cannonballAxes2=uiaxes('Units','pixels',...
'parent',cannonballFig2,...
'Position',[0 0 400 300],...
'Color',[0.99 0.99 0.99],...
'Box','on', ...
'XLim',[0 400],...
'YLim',[0 300], ...
'YDir','normal', ...
'XColor',[0.99 0.99 0.99],'YColor',[0.99 0.99 0.99],...
'XTick',[],'YTick',[]);
cannonballAxes1.Toolbar.Visible='off';
cannonballAxes2.Toolbar.Visible='off';
uibutton('parent',cannonballFig1,...
'position',[220,160,60,30],...
'Text','开始',...
'FontWeight','bold',...
'ButtonPushedFcn',@giveSpeed,...
'FontColor',[0.27 0.25 0.25],...
'FontSize',15);
postionPart1=get(cannonballFig1,'position');
ballPos=[20,150]+postionPart1(1,1:2);
vy=0;
a=0;
vx=0;
scatter(cannonballAxes1,ballPos(1)-postionPart1(1),ballPos(2)-postionPart1(2),200,'filled','CData',[0 0 0]);
scatter(cannonballAxes2,[],[],220,'filled','CData',[98 68 38]./255);
fps = 20;
cannonballTimer=timer('ExecutionMode', 'FixedRate', 'Period',1/fps, 'TimerFcn', @cannonballgame);
start(cannonballTimer)
function giveSpeed(~,~)
ballPos=[20,150]+postionPart1(1,1:2);
vy=-0.5;
a=0.2;
vx=4;
end
function cannonballgame(~,~)
postionPart1=get(cannonballFig1,'position');
postionPart2=get(cannonballFig2,'position');
vy=vy-a;
ballPos=ballPos+[vx,vy];
if ballPos(1)>=postionPart1(1)&&ballPos(1)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?