设置两个按钮,分别用于移动小球和停止小球 小球初始位置:距离文档显示区左上角(30,30) 小球直径:30 开始时,点击移动按钮,小球沿曲线向下向右移动,水平、竖直方向移动步长2,遇到文档区下边框,自动向上向前移动;遇到文档区右边框,原路返回;回到初始位置后,按同样规律移动
时间: 2024-03-16 20:46:57 浏览: 110
移动的按钮
好的,这是一个简单的小球移动动画,可以使用HTML5的canvas元素来实现。我来给你提供一个实现方案:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>小球移动动画</title>
</head>
<body>
<canvas id="canvas" width="600" height="400"></canvas>
<button id="moveBtn">移动</button>
<button id="stopBtn">停止</button>
<script>
// 获取 canvas 和按钮元素
const canvas = document.getElementById("canvas");
const moveBtn = document.getElementById("moveBtn");
const stopBtn = document.getElementById("stopBtn");
// 获取 canvas 2D 上下文
const ctx = canvas.getContext("2d");
// 设置小球初始位置和直径
const ball = {
x: 30,
y: 30,
r: 15,
dx: 2, // 水平方向移动步长
dy: 2, // 竖直方向移动步长
moving: false, // 小球是否正在移动
};
// 绘制小球
function drawBall() {
ctx.beginPath();
ctx.arc(ball.x, ball.y, ball.r, 0, 2 * Math.PI);
ctx.fillStyle = "red";
ctx.fill();
}
// 清空画布
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
// 移动小球
function moveBall() {
// 判断小球是否碰到边界
if (ball.x + ball.r > canvas.width || ball.x - ball.r < 0) {
ball.dx = -ball.dx; // 撞到墙壁了,反向移动
}
if (ball.y + ball.r > canvas.height || ball.y - ball.r < 0) {
ball.dy = -ball.dy; // 撞到墙壁了,反向移动
}
// 更新小球位置
ball.x += ball.dx;
ball.y += ball.dy;
// 清空画布并重新绘制小球
clearCanvas();
drawBall();
}
// 开始移动小球
function startMoving() {
if (!ball.moving) {
ball.moving = true;
setInterval(moveBall, 10); // 每隔10毫秒移动一次小球
}
}
// 停止移动小球
function stopMoving() {
ball.moving = false;
}
// 绑定按钮的点击事件
moveBtn.addEventListener("click", startMoving);
stopBtn.addEventListener("click", stopMoving);
// 绘制小球
drawBall();
</script>
</body>
</html>
```
这段代码使用了HTML5的canvas元素来绘制小球和文档区域,并使用JavaScript来实现小球的移动动画。其中,使用了两个按钮来控制小球的移动和停止。
阅读全文