js基于canvas碰碰球动画特效代码

所属分类: 网页特效-动画效果    2024-03-21 01:25:57

js基于canvas碰碰球动画特效代码 ie兼容6
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

js基于canvas碰碰球动画特效代码(共1个文件)

    • index.html

使用方法

      var ctx = document.getElementById("myCanvas").getContext("2d");
      var lastframe = 0;

      var Box = {
        x: 1,
        y: 1,
        width: myCanvas.width - 2,
        height: myCanvas.height - 2,
      };

      class Ball {
        undefined;
        constructor(x, y, r, speed) {
          undefined;
          this.x = x;
          this.y = y;
          this.r = r;
          this.xdir = 1;
          this.ydir = 1;
          this.speed = speed;
        }
        update(dt) {
          undefined;
          this.x += dt * this.speed * this.xdir;
          this.y += dt * this.speed * this.ydir;
          if (this.y + this.r > Box.height + Box.y) {
            undefined;
            this.ydir = -1;
          }
          if (this.x + this.r > Box.width + Box.x) {
            undefined;
            this.xdir = -1;
          }
          if (this.y - this.r < Box.y) {
            undefined;
            this.ydir = 1;
          }
          if (this.x - this.r < Box.x) {
            undefined;
            this.xdir = 1;
          }
        }
      }
      // 球体大小运动速度
      const ball1 = new Ball(90, 120, 80, 700);
      const ball2 = new Ball(60, 180, 120, 360);

      function collide(b1, b2) {
        undefined;
        dist = Math.sqrt(
          (b1.y - b2.y) * (b1.y - b2.y) + (b1.x - b2.x) * (b1.x - b2.x)
        );
        if (dist < b1.r + b2.r) return 1;
        return 0;
      }

      function main(tframe) {
        undefined;
        // 请求动画帧
        window.requestAnimationFrame(main);
        //document.write(tframe)
        //更新和渲染游戏
        update(tframe);
        render();
      }

      function update(tframe) {
        undefined;
        var dt = (tframe - lastframe) / 1000;
        lastframe = tframe;

        ball1.update(dt);
        ball2.update(dt);
        if (collide(ball1, ball2)) {
          temp = ball1.xdir;
          ball1.xdir = ball2.xdir;
          ball2.xdir = temp;
          temp = ball1.ydir;
          ball1.ydir = ball2.ydir;
          ball2.ydir = temp;
        }
      }

      function draw_ball(b) {
        undefined;
        ctx.fillStyle = "#ffffff";
        ctx.beginPath();
        ctx.arc(b.x, b.y, b.r, 0, 2 * Math.PI, 1);
        ctx.fill();
      }

      function drawFrame() {
        undefined;
        // 绘制背景和边框
        ctx.fillStyle = "gray";
        ctx.fillRect(0, 0, myCanvas.width, myCanvas.height);

        ctx.strokeStyle = "#000000";
        ctx.lineWidth = 2;
        ctx.strokeRect(Box.x, Box.y, Box.width, Box.height);
      }

      function render() {
        undefined;
        drawFrame();
        draw_ball(ball1);
        draw_ball(ball2);
      }

      main(0);

站长提示:
1. 苦力吧素材官方QQ群:950875342
2. 平台上所有素材资源,需注册登录会员方能正常下载。
3. 会员用户积极反馈网站、素材资源BUG或错误问题,每次奖励2K币
4. PHP源码类素材,如需协助安装调试,或你有二次开发需求,可联系苦力吧客服。
5. 付费素材资源,需充值后方能下载,如有任何疑问可直接联系苦力吧客服
相关资源 / 动画效果

jquery和GSAP实现逼真的雪花飘落动画特效代码

超逼真的雪花下落动画特效,雪花大小、飘落速度可自定义!
  动画效果
 4874  0

jquery+CSS3动感实用的10种风格进度条插件

一款实用好看的进度条插件,充分利用了CSS3的特性,让进度条外观显得非常时尚漂亮,共包含了10种风格样式,非常实用。
  动画效果
 2656  0

js创建的丰富的多彩动画特效代码

一款鼠标点击弹出动画特效代码,卡片有各种颜色,并在鼠标点击后触发显示扩展动画特效。
  动画效果
 1750  0

纯CSS3实现的360度3D旋转产品展示特效

一款3D产品图片展示特效,支持移动端触摸滑动,可用于3D模型展示。
  动画效果
 2723  0

评论数(0) 回复有机会获得K币 用户协议

^_^ 还没有人评论,快来抢个沙发!
😀
  • 😀
  • 😊
  • 😂
  • 😍
  • 😑
  • 😷
  • 😵
  • 😛
  • 😣
  • 😱
  • 😋
  • 😎
  • 😵
  • 😕
  • 😶
  • 😚
  • 😜
  • 😭
发表评论