效果如下图:整个正方形的边长为400,这里设置小球的位置在(400,100),初始位置在正方形的右边,设置加速度为-1。

声明小球的类:

function Ball(radius, color) {this.radius = radius || 10;this.color = color || "red";this.x = 0;this.y = 0;this.rotation = 0;this.scaleX = 1;this.scaleY = 1;this.lineWidth = 3;
}Ball.prototype.draw = function (context) {context.save();context.translate(this.x, this.y);context.rotate(this.rotation);context.scale(this.scaleX, this.scaleY);context.lineWidth = this.lineWidth;context.fillStyle = this.color;context.beginPath();context.arc(0, 0, this.radius, 0, Math.PI * 2, true);context.closePath();context.fill();if (this.lineWidth > 0) {context.stroke();}context.restore();
}

下次渲染渲染小球的时候,直接引用这个Ball类就好。

HTML:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>velocity 加速度</title>
</head><body><canvas id='canvas' width="400" height="400" style="border: 1px solid red;"></canvas><script src="./js/ball.js"></script><script>window.onload = () => {let canvas = document.getElementById('canvas');let context = canvas.getContext('2d'),ball = new Ball(10,'blue',context),vx = -1;ball.x = 400;ball.y = 100;(function drawFrame() {window.requestAnimationFrame(drawFrame, canvas);context.clearRect(0, 0, canvas.width, canvas.height);ball.x += vx;ball.draw(context);}())}</script>
</body></html>

requestAnimationFrame:控制小球循环运动,不然小球会一直停留在初始的一帧,没有产生运动的效果。

context.clearRect:清楚上一帧的图案。

Y轴方向的加速度

要是想在Y轴方向上设置一个加速的话,需要声明一个Y轴加速度vy,然后再小球循环运动的时候,重置小球的Y轴的位置即可ball.y +=vy;

角速度

先把角度转化为弧度,公式为:angle * Math.PI / 180,其中angle为角度,计算结果就是弧度了。

假设这个角度为angle=45,则弧度等于:

                let radians = angle * Math.PI / 180;let vx = Math.sin(radians) * range;let vy = Math.cos(radians) * range;ball.x -= vx;ball.y += vy;

JavaScript、canvas小球加速和减速运动相关推荐

  1. 如何用 JavaScript+Canvas 开发一款超级烧脑小游戏?

    作者 | huangjianke 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) [CSDN 编者按]据微信最新数据,微信小游戏累计注册用户量已突破10亿.那么初学者如何开发一款好玩又 ...

  2. 常用的 JavaScript 库 CDN 加速服务

    CDN 一般比你的网站快很多,可以在一定程度上加速访问,可以在一定程度上节省服务器流量,浏览器会缓存同一个地址的JS,因此,使用同一个 CDN 的人越多,加速效果越明显,为你的产品提供最佳的用户体验. ...

  3. html鼠标拖尾效果,javascript canvas拖尾效果

    {$title} var lujinglist = []; //制作路径 for (var x = 10; x <= 300; x++) { var dian = [x, 50]; lujing ...

  4. 利用canvas制作加速球波浪效果

    我在第一篇博客中提到运用canvas制作加速球效果,现在把整个代码分享给大家,希望对大家有帮助.(转载请标明出处) 先上效果图: 还存在一些问题: 1.想法是鼠标触碰到滑块才执行画波浪的效果,结果是直 ...

  5. canvas小球连线碰撞效果 html+css+js

    先看效果(完整代码在底部): canvas小球连线碰撞完整源代码 html+css+js 这是我的B站地址~热烈欢迎 实现(看注释,可一步一步跟着实现): 0:定义标签: <h1>北极光之 ...

  6. JavaScript+ Canvas开发趣味小游戏《贪吃蛇》

    一.效果展示 二.<贪吃蛇>基本实现思路 蛇头部分+蛇身体部分:采用对象形式来存储坐标,并将每个坐标对象放到一个snake数组中,方便使用.设置每个方格宽度30px,高度30px,画布高度 ...

  7. JavaScript canvas实现俄罗斯方块

    俄罗斯方块是个很经典的小游戏,也尝试写了一下.不过我想用尽量简洁逻辑清晰的代码实现.不用过多的代码记录下落方块的模型,或者记录每一个下落方块的x,y.想了下面的思路,然后发现这样很写很简明. 俄罗斯方 ...

  8. JavaScript - canvas - 画直角坐标系

    文章目录 预备知识 关于 canvas 画布的原点 画直线 项目结构 HTML CSS JavaScript 效果 设置 canvas 起点偏移(平移变换) JavaScript 效果 画空心三角形 ...

  9. JavaScript - canvas - 镜像图片

    文章目录 参考 <!DOCTYPE html> <html><head><meta charset="utf-8"><titl ...

  10. JavaScript canvas

    简介 HTML5 <canvas> 是绘制 图形/图像 的容器.它本身并没有绘制能力,您必须使用脚本来完成实际的绘图任务(通常是 JavaScript). 如果浏览器不支持<canv ...

最新文章

  1. 你想要的宏基因组-微生物组知识全在这(180601)
  2. AD环境部署文件服务器2012,Windows_server_2012部署AD域及辅域环境.doc
  3. 情绪调节的自适应_心理健康系列 | 大学生常见情绪问题及调试方法
  4. python 使用raise语句主动抛出异常(Exception)、将异常抛出给上一级
  5. 【网址收藏】VMware虚拟机安装Windows7
  6. 计算机在职考研一月联考院校,在职研究生一月联考的分数线是多少?
  7. 常见的linux命令及其翻译
  8. JAVA重载和重写的区别?
  9. UVA10023 Square root【大数】
  10. JavaScript中常见的几种继承方式
  11. 你对NLP的迁移学习爱的有多深?21个问题弄懂最新的NLP进展。
  12. opta球员大数据预测胜负_大数据预测4个特征,10个典型行业
  13. C# 合并多个PDF
  14. 02 文本检测(一)-CTPN
  15. 手机网页制作的认识(有关meta标签)
  16. wordpress插件_顶级WordPress反垃圾邮件插件
  17. android 360锁屏清除,“打盹”省电 360清理大师锁屏清理早已实现
  18. 多少开发人员 饿了么_开发个类似饿了么外卖app要多少钱
  19. 「镁客早报」OneWeb顺利发射首批6颗互联网卫星;华为西欧负责人称公司将会获得德国5G合同...
  20. Spring核心机制IoC与AoP梳理

热门文章

  1. Xamarin 跨平台应用开发(4)—— 页面布局
  2. SQL中常用的日期函数
  3. Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js6
  4. Java毕业设计-社区疫情防控管理系统
  5. PMBOK(第六版) PMP笔记——《八》第八章(项目质量管理)
  6. html5游戏打包apk,laya打包APK无法进入游戏
  7. 基于Matlab绘制演化博弈主体的演化轨迹
  8. Ubuntu20.10 安装RedNotebook,一款不错的日记本
  9. 中美线径对照表_中美WG线规对照表
  10. 【MATLAB】代码分享:matlab将word文档转为pdf输出