canvas元素运动碰撞的小方块
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>方块运动碰撞</title>
<style>
* {
padding: 0;
margin: 0;
}
#canvas {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="canvas">您的浏览器不支持canvas,请升级</canvas>
<script>
let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');//获取画笔对象
let width=500,height=400,w=50,h=50,fillStyle='red',xFlag=1,yFlag=1,step=2,x=0,y=0;
// xFlag 1 :正方向 往右走 否则为0
// yFlag 1 :正方向 往下走 否则为0
canvas.width=width;
canvas.height=height;
let maxX=width-w;//最大的x位置
let maxY=height-h;//最大的y位置
setInterval(()=>{
// 每一次执行前都清空画布
ctx.clearRect(0,0,width,height);
// 判断方向
if(xFlag == 1){
x+=step;
if(x>=maxX){
xFlag=0;
}
}else if(xFlag == 0){
x += -step;
if(x<=0){
xFlag=1;
}
}
// 判断方向
if(yFlag == 1){
y+=step;
if(y>=maxY){
yFlag=0;
}
}else if(yFlag == 0){
y += -step;
if(y<=0){
yFlag=1;
}
}
ctx.beginPath();
ctx.fillStyle=fillStyle;
ctx.fillRect(x,y,w,h);
},30)
</script>
</body>
</html>
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634578.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现