`

一个简单的javascript小球碰撞代码

 
阅读更多
一个简单的javascript小球碰撞代码,综合了键盘操作,canvas等知识了,javascript入门小游戏基础


<body>
    <canvas id="canvas" width="400" height="400"></canvas>
    <script src="https://code.jquery.com/jquery-2.1.0.js"></script>
    <script>
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var width = canvas.width;
    var height = canvas.height;

    var circle = function (x, y, radius, fillCircle) {
      ctx.beginPath();
      ctx.arc(x, y, radius, 0, Math.PI * 2, false);
      if (fillCircle) {
        ctx.fill();
        } else {
        ctx.stroke();
      }
    };

    // The Ball constructor
    var Ball = function () {
      this.x = width / 2;
      this.y = height / 2;
      this.xSpeed = 5;
      this.ySpeed = 0;
    };

    
    Ball.prototype.move = function () {
      this.x += this.xSpeed;
      this.y += this.ySpeed;

      if (this.x < 0) {
        this.x = width;
      } else if (this.x > width) {
        this.x = 0;
      } else if (this.y < 0) {
        this.y = height;
      } else if (this.y > height) {
        this.y = 0;
      }
    };

   
    Ball.prototype.draw = function () {
      circle(this.x, this.y, 10, true);
    };

   
    Ball.prototype.setDirection = function (direction) {
      if (direction === "up") {
        this.xSpeed = 0;
        this.ySpeed = -5;
      } else if (direction === "down") {
        this.xSpeed = 0;
        this.ySpeed = 5;
      } else if (direction === "left") {
        this.xSpeed = -5;
        this.ySpeed = 0;
      } else if (direction === "right") {
        this.xSpeed = 5;
        this.ySpeed = 0;
      } else if (direction === "stop") {
        this.xSpeed = 0;
        this.ySpeed = 0;
      }
    };

    // Create the ball object
    var ball = new Ball();

    // An object to convert keycodes into action names
    var keyActions = {
      32: "stop",
      37: "left",
      38: "up",
      39: "right",
      40: "down"
    };

   
    $("body").keydown(function (event) {
      var direction = keyActions[event.keyCode];
      ball.setDirection(direction);
    });

 
    setInterval(function () {
      ctx.clearRect(0, 0, width, height);

      ball.draw();
      ball.move();

      ctx.strokeRect(0, 0, width, height);
    }, 30);
    </script>
</body>
分享到:
评论

相关推荐

    原生js小球碰撞动画代码

    总的来说,"原生js小球碰撞动画代码"是一个综合性的项目,涵盖了JavaScript编程基础、DOM操作、CSS样式控制以及基本的物理知识。通过这个项目,开发者不仅可以提升JavaScript的实战能力,还能深入理解网页动态效果的...

    js html5 canvas制作多个小球碰撞的动画效果

    这就是一个简单的基于JavaScript和HTML5 Canvas的小球碰撞动画实现。你可以根据自己的需求调整小球数量、速度、颜色等参数,或者添加更复杂的物理模拟,如摩擦力、重力等,以增加动画的真实感和趣味性。这个项目是一...

    这是一个把小球碰撞特效封装起来的js文件

    在这个特定的案例中,我们有一个名为"Small-Ball-Collision-master"的压缩包,它封装了一个小球碰撞特效的JavaScript实现。这个特效可能用于创建游戏、动态展示或者任何需要动态元素相互作用的网页应用。 首先,...

    小球碰撞游戏JS源码.zip

    【小球碰撞游戏JS源码.zip】是一个包含JavaScript实现的小型互动游戏的代码包,主要利用HTML5的Canvas API和`requestAnimationFrame`动画框架。这个游戏的核心是模拟小球的物理碰撞,通过JavaScript来处理游戏逻辑和...

    HTML5小球碰撞叠加zip

    "HTML5小球碰撞叠加"游戏是一个典型的示例,它利用了HTML5的Canvas元素以及JavaScript库Box2D来实现物理模拟效果。 Canvas是HTML5的一个核心特性,它提供了一个二维图形绘制的画布,开发者可以通过JavaScript来控制...

    HTML5+Canvas彩色小球碰撞动画运动特效

    例如,一个简单的小球类可能会有如下的结构: ```javascript class Ball { constructor(x, y, radius, color) { this.x = x; this.y = y; this.radius = radius; this.color = color; // ... } draw...

    小球碰撞叠加html5

    标签“html5 小球碰撞”表明这个项目涵盖了HTML5的基本特性和动画实现,而实际的项目文件“texiao3300_1560680796”可能包含了HTML结构、CSS样式以及实现小球碰撞动画的JavaScript代码。通过分析这些文件,我们可以...

    HTML5 Canvas彩色小球碰撞运动特效.zip

    这个“HTML5 Canvas彩色小球碰撞运动特效”是利用Canvas API构建的一个动态视觉效果,展示了小球之间的碰撞交互。下面我们将深入探讨这个特效涉及到的关键技术和实现方法。 首先,Canvas API提供了`drawRect()`, `...

    原生JS实现多个小球碰撞反弹效果示例

    本文所涉及的原生JavaScript实现小球碰撞反弹效果的示例,提供了一个动态效果实现的典型案例。通过学习本文内容,读者应该能够掌握小球位置更新、随机数生成、碰撞检测以及事件处理等相关知识点。这些技能不仅限于...

    小球完全弹性碰撞.zip

    "小球完全弹性碰撞"这个主题涉及到的是使用JavaScript(JS)和CSS(Cascading Style Sheets)来实现一个模拟物理世界中小球碰撞的动画效果。在这个场景中,小球之间会发生完全弹性碰撞,这意味着碰撞前后系统的总...

    Html5两小球相撞Demo源码

    "Html5两小球相撞Demo源码"是一个展示HTML5 canvas API功能的实例,它通过JavaScript来实现动态模拟小球碰撞的过程。这个Demo的核心知识点主要包括以下几个方面: 1. **HTML5 Canvas**:Canvas是HTML5中的一个核心...

    box2d小球碰撞--js代码

    在这个“box2d小球碰撞--js代码”的项目中,开发者使用jQuery与Box2D库结合,创建了一个小球碰撞的互动场景。 首先,我们要理解jQuery库。jQuery是一个高效、简洁的JavaScript库,简化了HTML文档遍历、事件处理、...

    碰撞小球实验

    这个实验的核心是通过编程来创建一个环境,使得小球能够在这个环境中运动,并在与其他物体碰撞时改变其轨迹。下面将详细讲解与这个实验相关的多个知识点。 1. **计算机图形学**:这是研究如何在屏幕上生成和操作...

    HTML5小球碰撞叠加.zip

    在小球碰撞叠加的场景中,HTML5可能通过`&lt;canvas&gt;`元素来创建一个画布,这是一个二维绘图环境,允许动态生成图形。开发者可以利用JavaScript在`canvas`上绘制小球,并处理它们的运动和碰撞效果。 CSS(层叠样式表)...

    javascript canvas检测小球碰撞

    在给定的代码中,可以看到一个简单的矩形移动并反弹的实现,但核心是实现小球碰撞的检测。接下来我们将详细讲解这个过程。 首先,我们需要创建小球的属性,包括位置(x,y),半径(r),以及速度(speedX,speedY...

    HTML5小球撞击碰撞检测例子.rar

    总之,"HTML5小球撞击碰撞检测例子"是一个很好的教学示例,涵盖了HTML5游戏开发的关键技术,适合想要学习这方面知识的开发者进行实践和探索。通过这个例子,你可以掌握如何在网页上实现动态图形、碰撞检测以及用户...

    API制作红色小球碰撞

    标题“API制作红色小球碰撞”暗示我们即将探讨的是一个编程项目,可能涉及游戏开发或者图形界面编程。在这个项目中,API(应用程序接口)被用来创建和管理红色小球的碰撞检测。API在编程中起着至关重要的作用,它...

    HTML5模拟力学原理小球碰撞弹回.rar

    这个“HTML5模拟力学原理小球碰撞弹回.rar”压缩包包含了一个利用HTML5技术来模拟物理世界的实例,特别是力学原理中的小球碰撞和弹回现象。 在HTML5中,我们可以使用Canvas元素来创建画布,通过JavaScript来绘制和...

    【JavaScript源代码】原生js实现移动小球(碰撞检测).docx

    本示例通过原生 JavaScript 和 HTML 实现了一个动态的小球移动效果,并且具备基本的碰撞检测功能。主要涉及的技术点包括: 1. **CSS 样式设计**:为小球设置样式。 2. **DOM 操作**:获取页面元素、修改元素样式等...

    javascript经典特效---极具创意的小球.rar

    综上所述,这个“极具创意的小球”项目是JavaScript编程的一个精彩实例,它利用HTML5的特性,结合JavaScript动态控制,可能实现了如重力模拟、碰撞检测、速度计算等一系列复杂的效果,让小球在网页上展现出富有生命...

Global site tag (gtag.js) - Google Analytics