50行代码实现动图&交互
时间:2022-06-20
本文章向大家介绍50行代码实现动图&交互,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
% 敲击左右键移动底部方块
clear; clc; clf;
% ------------------- 设置 ------------------------------------------ %
set(gcf,'units', 'normal','position', [.1 .1 .8 .8],... % figure属性
'KeyPressFcn',@controls, 'color', [.6 .6 .8]); % 绑定按键回调
set(gca,'color', 'black','position', [.05 .05 .9 .9],... % 坐标轴属性
'XLim', [-5 100], 'YLim', [-5 100],...
'XTick', [], 'YTick', [],'nextplot', 'add')
global blockPos; blockPos = 0; % 底部方块
blockVertices = @(x) [x-5,-2; x+5,-2; x+5, 0; x-5, 0];
blockObj = patch('Vertices', blockVertices(blockPos),...
'Faces', [1 2 3 4],'FaceColor', [.6 .8 .6]);
ballPos = [ 10; 10]; % 小球
ballVel = [ .5; 1];
ballObj = plot(ballPos(1),ballPos(2),'.',...
'MarkerSize',50,'color',[.8 .6 .6]);
% ----------------------- 主循环 ------------------------------------ %
while 0 < 1
tic; % 开始计时
if ballPos(1) > 100 || ballPos(1) < 0
ballVel(1) = -ballVel(1); % 边界
elseif ballPos(2) > 100
ballVel(2) = -ballVel(2); % 顶部墙
elseif ballPos(2) < 0
if abs(blockPos - ballPos(1)) < 5 % 底部方块
ballVel(2) = -ballVel(2);
else % 方块没接住球
close all; break;
end
end
ballPos = ballPos + ballVel; % 球的动作
set(ballObj,'XData',ballPos(1),'YData',ballPos(2));
set(blockObj,'Vertices', blockVertices(blockPos));
pause(1/60 - toc); % 60 fps
end
% -------------------- 回调函数 ------------------------------------ %
function controls(~, event) % 按键回调
global blockPos
switch event.Key
case 'leftarrow'
blockPos = blockPos - 5;
case 'rightarrow'
blockPos = blockPos + 5;
end
end
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- jQuery点击click()事件
- 大点干!早点散----------深入剖析LVS负载均衡群集原理
- javascript中元素的scrollLeft和scrollTop属性说明
- 大点干!早点散----------LVS负载均衡之LVS-NAT部署实战
- 大点干!早点散----------负载均衡LVS-DR群集部署
- 大点干!早点散----------群集负载均衡LVS DR+keepalived部署实战
- Java字符串所占字节数的小总结
- Java类加载机制详解
- 详解Java注解(Annotation)
- 你不知道的Synchronized
- 从Java并发集合看锁优化策略
- Java常用并发容器总结(二)
- Java常用并发容器总结(一)
- Java常用并发容器总结(三)
- Java常用并发容器总结(四)