canvas 小球碰撞的效果
1、 用canvas实现小球在局部的空间内,不停的滚动效果,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | <!DOCTYPE html> <html> <head> <meta charset= "utf-8" > <title>小球碰撞</title> </head> <style type= "text/css" > #myCanvas { border: 1px solid #000000; } </style> <body> <canvas id= "myCanvas" width= "500" height= "500" >浏览器不支持Canvas</canvas> </body> </html> <script type= "text/javascript" > var car = document.getElementById( "myCanvas" ); var ctx = car.getContext( "2d" ); var h = 500; var w = 500; var x = 100; var y = 100; var r = 20; //水平方向的速度 var speedX = 4; //垂直方向的速度 var speedY = 3; var Interval = setInterval(() => { //改变X的坐标 x = x + speedX; //当x的位置加上半径大于等于总宽度的时候,代表小球刚好与右边边框相碰 //当x的位置加上半径小于等于0的时候,代表小球刚好与左边边框相碰 if (r + x >= w || x - r <= 0) { //当判断成立时,代表速度要取相反值,小球才会进行反方向运动 speedX = -speedX; } //改变Y的坐标 y = y + speedY; //当Y的位置加上半径大于等于总高度的时候,代表小球刚好与底边边框相碰 //当Y的位置加上半径小于等于0的时候,代表小球刚好与上边边框相碰 if (r + y >= h || y - r <= 0) { //当判断成立时,代表速度要取相反值,小球才会进行反方向运动 speedY = -speedY; } //清空内容 ctx.clearRect(0, 0, w, h); motion(x, y, randomHexColor()); }, 10) function motion(x, y, color) { ctx.beginPath(); ctx.arc(x, y, r, 0, Math.PI * 2); ctx.fillStyle = color; ctx.fill(); ctx.strokeStyle = color; ctx.stroke(); ctx.closePath(); } //随机生成十六进制颜色 function randomHexColor() { //生成ffffff以内16进制数 var hex = Math.floor(Math.random() * 16777216).toString(16); //while循环判断hex位数,少于6位前面加0凑够6位 while (hex.length < 6) { hex = '0' + hex; } //返回‘#'开头16进制颜色 return '#' + hex; } </script> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具