当前位置:首页 > JavaScript

js实现投篮

2026-03-14 16:32:19JavaScript

实现投篮效果的JavaScript代码

创建一个简单的投篮动画可以通过HTML5 Canvas和JavaScript实现。以下是一个基础示例,模拟篮球从投篮点到篮筐的抛物线运动。

// 获取Canvas元素和上下文
const canvas = document.getElementById('basketballCanvas');
const ctx = canvas.getContext('2d');

// 篮球属性
const ball = {
  x: 50,
  y: canvas.height - 50,
  radius: 15,
  color: 'orange',
  velocityX: 5,
  velocityY: -10,
  gravity: 0.2
};

// 篮筐属性
const hoop = {
  x: canvas.width - 100,
  y: 150,
  width: 60,
  height: 5
};

// 绘制篮球
function drawBall() {
  ctx.beginPath();
  ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
  ctx.fillStyle = ball.color;
  ctx.fill();
  ctx.closePath();
}

// 绘制篮筐
function drawHoop() {
  ctx.fillStyle = 'red';
  ctx.fillRect(hoop.x, hoop.y, hoop.width, hoop.height);
}

// 更新篮球位置
function update() {
  // 清除画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 绘制篮筐
  drawHoop();

  // 更新篮球位置
  ball.x += ball.velocityX;
  ball.y += ball.velocityY;
  ball.velocityY += ball.gravity;

  // 绘制篮球
  drawBall();

  // 检测是否碰到篮筐
  if (ball.x + ball.radius > hoop.x && 
      ball.x - ball.radius < hoop.x + hoop.width && 
      ball.y + ball.radius > hoop.y && 
      ball.y - ball.radius < hoop.y + hoop.height) {
    alert('投篮成功!');
    resetBall();
  }

  // 检测是否出界
  if (ball.y > canvas.height || ball.x > canvas.width) {
    resetBall();
  }

  requestAnimationFrame(update);
}

// 重置篮球位置
function resetBall() {
  ball.x = 50;
  ball.y = canvas.height - 50;
  ball.velocityX = 5;
  ball.velocityY = -10;
}

// 开始动画
update();

HTML结构

需要添加以下HTML代码来配合JavaScript运行:

<canvas id="basketballCanvas" width="600" height="400"></canvas>

CSS样式

可以添加基本样式增强视觉效果:

#basketballCanvas {
  border: 1px solid black;
  background-color: #f0f0f0;
  display: block;
  margin: 0 auto;
}

增强交互性

可以添加鼠标点击事件来控制投篮时机:

canvas.addEventListener('click', function() {
  resetBall();
  update();
});

物理参数调整

抛物线运动效果可以通过调整以下参数实现不同投篮效果:

js实现投篮

  • velocityX:控制水平速度
  • velocityY:控制初始垂直速度
  • gravity:控制重力影响程度

这些代码创建了一个简单的投篮模拟,篮球会沿着抛物线轨迹运动,当碰到篮筐时会显示成功提示。可以根据需要调整参数来改变投篮的力度和角度。

标签: js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…