基于JavaScript之碰撞的小球

2023-05-16

<!DOCTYPE HTML>
<HTML>
 <HEAD>
  <META name="Generator" content="EditPlus">
  <META name="Author" content="ResumeBB">
  <META name="Keywords" content="">
  <META name="Description" content=""> 
  <TITLE>碰撞球</TITLE>
  <style>
  body{
  margin:0;
  }
  canvas{
  display:block;
  }
  </style>
 </HEAD>

 <BODY>
  <canvas class="bubble"></canvas>
<script>
var oCanvas=document.querySelector(".bubble");
var w,h;
var aColor=["#ffff99","#00ffcc","#ff0066","#00ffcc","#0000ff"];
var aBubble=[];//存放新生成的小球
~~function setSize(){
window.οnresize=arguments.callee;
//获取浏览器宽,高
w=window.innerWidth;
h=window.innerHeight;
//给canvas元素设置可视区域大小
oCanvas.width=w;
oCanvas.height=h;
}();
//获取canvas元素上可用来绘制的区域
var canCon=oCanvas.getContext("2d");
function random(min,max){
return Math.random()*(max-min)+min;//获取max-min之间的值
}


function Bubble(){};

Bubble.prototype={
init:function(){//基本参数
  this.x=random(0,w);//新生成小球的x位置 0-w
  this.y=random(0,h);//新生成小球的y位置 0-h
  this.r=random(1,5);//新生成小球的半径
  this.color=aColor[Math.floor(random(0,5))];//新生成小球的颜色
  this.vx=random(-1,1);
  this.vy=random(-1,1);
},
draw:function(){
    canCon.beginPath();//把笔抬起来
    canCon.fillStyle=this.color;//画笔设置颜色
    canCon.arc(this.x,this.y,this.r,0,Math.PI*2);//画一个圆  圆心  半径  角度
    canCon.fill()//填充作画
},
move:function(){
this.x+=this.vx;
this.y+=this.vy;

if(this.x-this.r<0||this.x+this.r>w){
this.vx=-this.vx;
}
if(this.y-this.r<0||this.y+this.r>w){
this.vy=-this.vy;
}

this.draw();
}
}

var bubble=new Bubble();
bubble.init();
bubble.draw();

function create(num){
    for(var i=0;i<num;i++){
    var bubble=new Bubble();
    bubble.init();
    bubble.draw();
    aBubble.push(bubble);
}
}
create(500);
setInterval(function(){
	canCon.clearRect(0,0,w,h);
for(var item of aBubble){
item.move();
}
},1000/60);
</script>

 </BODY>
</HTML>

效果图


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于JavaScript之碰撞的小球 的相关文章

  • 使用日期类型将输入字段中的日期居中

    我想将日期居中input not input inside div 如果我进行居中 它将把日期居中于input因为有一个右侧面板用于根据日历选择日期 该面板根据输入宽度调整大小 用于演示的小代码片段 center text align ce
  • 在 Meteor.method 中调用函数返回未定义

    过去几天我一直在尝试从 Meteor 方法获取返回对象 每次我这样做我都会得到undefined在客户端上 Meteor methods CORSTest function let url www theverge com 2017 4 1
  • 根据嵌套值使用数组过滤对象数组

    我正在尝试根据某些嵌套对象过滤数组 我准备了一些Fiddle http jsfiddle net NZnN2 249 输入数组如下所示 let arrayOfElements name a subElements surname 1 sur
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 按下了哪个提交按钮?

    在这个jsfiddle中 http jsfiddle net littlesandra88 eGRRb http jsfiddle net littlesandra88 eGRRb 我是否提交了自动生成的按钮 每个表行都有一个唯一的 ID
  • JSDoc:如何在生成的文档中包含自定义 css 文件模板?

    JS文档docs https jsdoc app about configuring default template html say 将图像目录复制到输出目录 复制全部 将 myproject static 中的静态文件复制到输出目录
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • 用于导出到 CSV/Excel 的数据 URI(无服务器端请求):浏览器支持/限制?

    以下问题 Javascript 或 Flash 导出至 CSV Excel https stackoverflow com questions 8150516 javascript or flash export to csv excel
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • chrome 扩展 - 将数据从后台传递到自定义 html 页面

    创建浏览器扩展 我必须从 background js 打开新选项卡并将 JSON 数据传递到这个新选项卡 在新选项卡中 我使用传递的 JSON 数据来操作 渲染 DOM 下面是我的 background js 的一部分 我在其中使用自定义
  • IE6 丢失查询字符串

    我有一个使用 javascript 从查询字符串中获取值的页面window location 从网络服务器运行时效果很好 但如果我通过将其放在地址栏中使用 IE6 在本地运行它 c mysite index htm 网站创建的任何查询字符串
  • 如何在 JavaScript 中设置/更新 String 对象的值

    我有一个具有一些属性的对象字符串对象 var obj foo new String bar 我在用字符串对象因为我需要在对象上存储额外的子属性 同时仍然能够获取字符串值 obj foo baz baz obj foo gt bar 我觉得问
  • 在 中动态添加链接样式表 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 如何将链接
  • nvd3.js - 无法更改折线图中线条的颜色

    我正在尝试更改 nvd3 折线图不同线条的颜色here http nvd3 org livecode index html codemirrorNav但我无法理解该怎么做 我想将示例中的 2 条线的颜色更改为绿色和青色 我试过 nv add
  • Chrome Prerender 功能每次都会被取消

    我正在尝试 Chrome 中的预渲染功能 但是当我检查网络时 我可以看到任何链接的请求都被取消 我使用以下语法 我尝试了现场演示http prerender test appspot com http prerender test apps
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就

随机推荐

  • Ribbon负载均衡

    Ribbon介绍 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具 xff0c 它基于Netflix Ribbon实现 通过Spring Cloud的封装 xff0c 可以让我们轻松地将面向服务的REST
  • RabbitMQ消息队列

    同步异步通讯 微服务间通讯有同步和异步两种方式 同步通讯 xff1a 就像打电话 xff0c 需要实时响应 异步通讯 xff1a 就像发邮件 xff0c 不需要马上回复 两种方式各有优劣 xff0c 打电话可以立即得到响应 xff0c 但是
  • Spring Boot集成Spring Security

    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架 它提供了一组可以在Spring应用上下文中配置的Bean xff0c 充分利用了Spring IoC xff0c DI xf
  • 超分辨重建-Bicubic双三次线性插值opencv实现

    论文实验中经典方法Bicubic的Python实现 使用时更改文件夹 保存路径 重建倍数即可 import os import argparse import cv2 parse args parser 61 argparse Argume
  • opencv_contrib aruco源码

    https github com opencv opencv contrib tree master modules 最近使用了aruco模块 想看看aruco的源码是怎样实现的 在opencv源码中一直没找到aruco 原来 他隐藏在op
  • HTTP/WEB中常见的状态码大全

    HTTP 状态码分类 HTTP 状态码由三个十进制数字组成 xff0c 第一个十进制数字定义了状态码的类型 响应分为五类 xff1a 信息响应 100 199 成功响应 200 299 重定向 300 399 客户端错误 400 499 服
  • 低质量图像超分算法 SwinIR: Image Restoration Using Swin Transformer

    论文名称 xff1a SwinIR Image Restoration Using Swin Transformer 论文地址 xff1a https arxiv org abs 2108 10257 代码仓库 xff1a https gi
  • volatile关键字详解

    volatile的作用 volatile是一个轻量级的synchronized xff0c 一般作用于变量 xff0c 在多线程开发中保证了内存的可见性 相比于synchronized关键字 xff0c volatile关键字的执行成本更低
  • 矩阵连乘-动态规划

    xfeff xfeff 问题 xff1a 给定n个矩阵 xff1a A1 A2 An xff0c 其中Ai与Ai 43 1是可乘的 xff0c i 61 1 xff0c 2 xff0c n 1 确定计算矩阵连乘积的计算次序 xff0c 使得
  • 流水作业调度-算法设计

    问题描述 xff1a 算法描述 xff1a 具体代码 xff1a include lt stdio h gt include lt iostream gt using namespace std class Jobtype public i
  • 动态规划解决01背包问题

    问题描述 xff1a 简单的说就是容量为c的背包 xff0c 有n个物品 xff0c 物品i的重量为wi xff0c 其价值为vi xff0c 问要如何选择装入物品使得背包中物品总价值最大 xff1f xff08 在选择装入背包的物品时 x
  • 石子合并问题

    问题描述 xff1a 在一个圆形操场的四周摆放着n堆石子 xff0c 现在要将石子有次序的合并成一堆 xff0c 规定每次只能选取相邻的两堆石子合并成一堆新的一堆 xff0c 并将新的一堆石子数记为此次合并的得分 xff0c 要求设计一个算
  • 类与对象

    1 编写一个代表三角形的类 xff0c 其中三条边为三角形的属性 xff0c 并且封装有求三角形的面积和周长的方法 分别针对三条边为3 4 5 和7 8 9的两个三角形进行测试 程序代码 xff1a package ex5 public c
  • 抽象类与接口

    1 定义一个接口 xff0c 其中包含一个displa 方法用于显示信息 xff1a 通知类 xff0c 汽车类 xff0c 广告类 xff0c 均要实现该接口显示 通知内容 xff0c 汽车油量 和 广告信息 程序代码 xff1a pub
  • ArduSub SITL Ubuntu mavros环境搭建

    第一章 ArduSub SITL Ubuntu环境搭建 作者 xff1a 张玉梅 zhangym 64 pcl ac cn 1 1 安装过程 第一步 xff1a http ardupilot org dev docs building se
  • 继承与多态

    1 给Point类添加一下几个求两点间距离的多态方法 xff1a public double distance Point p public double distance int x int y public static double
  • css+js制作一个简易的播放器

    lt doctype html gt lt html gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 Keywords 34 content 61 34
  • 图片轮播

    lt DOCTYPE HTML gt lt HTML gt lt HEAD gt lt META name 61 34 Generator 34 content 61 34 EditPlus 34 gt lt META name 61 34
  • 3d盒子

    lt DOCTYPE HTML gt lt HTML gt lt HEAD gt lt TITLE gt 旋转盒 lt TITLE gt lt meta charset 61 34 UTF 8 34 gt lt META name 61 3
  • 基于JavaScript之碰撞的小球

    lt DOCTYPE HTML gt lt HTML gt lt HEAD gt lt META name 61 34 Generator 34 content 61 34 EditPlus 34 gt lt META name 61 34