一、❤ ❤实现效果

二、❤ ❤代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#can{border:1px solid #999;}</style>
</head>
<body><!-- 面向对象的小球 --><canvas id="can" width="500" height="500"></canvas><script>var can =document.getElementById("can");var ctx=can.getContext('2d');var w=h=500;// 面向对象
// 随机数
//  起始坐标x 起始坐标y 小球半径r x轴速度 y轴速度function r(num){return Math.random()*num;}var a=parseInt(r(10));console.log(a);// step1:创建小球类function Ball(){this.x=parseInt(r(5))+60;//因为半径最大为60 所以保持60的距离this.y=parseInt(r(3))+60;this.r=parseInt(r(40))+10;//10-50// 随机颜色this.color='#'+parseInt(Math.random()*0xffffff).toString(16);// this.xSpeed=r(3)+2;//[2,5]// this.xSpeed=r(3)+1;//[1,4]this.ySpeed=parseInt(r(3))+2this.xSpeed=parseInt(r(3))+1}//step2: 定义小球显示方法Ball.prototype.show=function(){// 更新坐标this.run();ctx.beginPath()ctx.arc(this.x,this.y,this.r,0,Math.PI*2);ctx.fillStyle=this.color;ctx.fill()ctx.closePath()};//step3: 定义小球运动的方法Ball.prototype.run=function(){if(this.x-this.r<=0 || this.x+this.r>=w){this.xSpeed= -this.xSpeed;}this.x=this.x+this.xSpeed;if(this.y-this.r<=0 || this.y+this.r>=h){this.ySpeed= -this.ySpeed;}this.y=this.y+this.ySpeed;};// step4:创建一个小球数组(一个大篮子)var ballArr=[];// 创建一个小球的数组for(var i=0;i<10;i++){var ball=new Ball();// 放入小球数组ballArr.push(ball);ball.show();}// step5:小球运动setInterval(function(){// 清除画布ctx.clearRect(0,0,w,h);// 遍历数组for(var j=0;j<ballArr.length;j++){var ball=ballArr[j];// 更新坐标,显示小球// ball.run();ball.show();// console.log(ballArr);}// console.log(00);},10);</script>
</body>
</html>

三、❤ ❤思路

1.创建画布宽500高500(记住宽高写在canvas里与写在css里是不一样的!!!!!)

    <canvas id="can" width="500" height="500"></canvas>

2.获取上下文

  var can =document.getElementById("can");var ctx=can.getContext('2d');

3.创建一个随机方法(用于设置小球宽高,颜色位置)

  function r(num){return Math.random()*num;}

4.创建小球类, 起始坐标x 起始坐标y 小球半径r 小球颜色 x轴速度 y轴速度全部随机,记得要parseInt(我之前忘记使用ParseInt然后小球出不来),虽然小球初始位置的随机的,但是给小球设置初始位置至少是(60,60),因为小球的坐标是小球圆心的坐标,如果小球一开始出现在(1,1)等这些靠近边缘的地方,那么小球会一直贴着边缘运动,具体原因看小球的运动方法

// step1:创建小球类function Ball(){this.x=parseInt(r(5))+60;//因为半径最大为60 所以保持60的距离this.y=parseInt(r(3))+60;this.r=parseInt(r(40))+10;//10-50// 随机颜色this.color='#'+parseInt(Math.random()*0xffffff).toString(16);// this.xSpeed=r(3)+2;//[2,5]// this.xSpeed=r(3)+1;//[1,4]this.ySpeed=parseInt(r(3))+2this.xSpeed=parseInt(r(3))+1}

5.定义小球运动方法,小球左侧小于或等于零,右侧大于或者等于画布宽小球马上改变运动方向避免出去

//step3: 定义小球运动的方法Ball.prototype.run=function(){if(this.x-this.r<=0 || this.x+this.r>=w){this.xSpeed= -this.xSpeed;}this.x=this.x+this.xSpeed;if(this.y-this.r<=0 || this.y+this.r>=h){this.ySpeed= -this.ySpeed;}this.y=this.y+this.ySpeed;};

6.创建一个小球数组

  // step4:创建一个小球数组(一个大篮子)var ballArr=[];

7.循环让所有小球出现

 for(var i=0;i<10;i++){var ball=new Ball();// 放入小球数组ballArr.push(ball);ball.show();}

8.让小球运动起来(小球运动一定不能忘了清除画布clearRect!!!)

// step5:小球运动setInterval(function(){// 清除画布ctx.clearRect(0,0,w,h);// 遍历数组for(var j=0;j<ballArr.length;j++){var ball=ballArr[j];// 更新坐标,显示小球// ball.run();ball.show();// console.log(ballArr);}// console.log(00);},10);

四、❤ ❤总结

赶快行动起来吧!!!动手自己试试看

❤ ❤html canvas面向对象的彩色小球❤ ❤相关推荐

  1. Canvas动画彩色小球下落

    彩色小球.html <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  2. canvas绘制七彩随机小球!

    canvas绘制七彩随机小球 1.题目 拿到一个案例,需要在画布上实现不同大小颜色位置的七彩小球,并且要运动起来! 2.思路 (1).第一步需要在页面上创建画布元素,创建一个数组用来存放随机小球的个数 ...

  3. html画布实现小球沿直线下落,[面向对象的案例]在canvas画布内实现小球的随机移动...

    //css部分,给画布设置边框 canvas { border:1px solid orange; } //html 添加画布 准备工作 先确定所需要的属性 小球的起始xy坐标.R半径.颜色.速度sp ...

  4. html跳动的小球,canvas绘制跳动的小球

    动画反弹 *{ margin:0; padding:0; } canvas1{ box-shadow: 0px 0px 10px red; position: absolute; left:50px; ...

  5. canvas教程7-炫彩小球

    文章目录 一.炫彩小球 二.效果图 篇章 一.炫彩小球 <!DOCTYPE html> <html lang="en"> <head><m ...

  6. js+html5 canvas全屏彩色条状海浪动画js特效

    下载地址 基于js+html5 canvas制作的一款好看的全屏彩色条状海浪动画特效. dd:

  7. 这个机械装置真的能够分离彩色小球吗?

    在网络中有人展示了一段神奇的视频,显示一块高尔顿钉板(Galton board)可以自动按照颜色来分离小球.这段视频让每位观看者都大为困惑. ▲ 彩球自动分离装置 这种视频片段在网络上还是蛮流行的.它 ...

  8. canvas笔记-绘制运动小球(落地弹起,遇边回弹)

    程序运行截图如下: 就是这个球,遇到底端及左右两边都可以弹 源码如下: canvas4.html <!DOCTYPE html> <html lang="en"& ...

  9. html条纹填充色,HTML5/Canvas 上传图片的彩色斑马条纹遮罩效果

    JavaScript 语言: JaveScriptBabelCoffeeScript 确定 var reader = new FileReader(); var img = document.crea ...

  10. html5 canvas爆炸,html5 canvas彩色爆炸的小球动画特效

    特效描述:html5 canvas 彩色爆炸 小球动画特效.html5 canvas特效,有中心向四周爆炸的彩色小球,有开始和暂停按钮 代码结构 1. HTML代码 开始运动 停止运动 var can ...

最新文章

  1. tf.keras.losses.categorical_hinge 分类铰链 损失函数 示例
  2. 数据的存入取出(注册机方式)
  3. 《精通J2EE网络编程》中讲的JNDI 6.3总结
  4. JDK/Java SE官方文档汇总
  5. [转载] 机器学习 scikit-learn1 预测贷款用户是否会逾期
  6. Android图形显示系统——下层显示1:基础知识与相关文件
  7. 单网卡实现 双IP 双网段(内外网)同时运行
  8. 二十一个微信公众号推广技巧
  9. 验证iOS应用的无障碍特性
  10. 湖北文理学院毕业论文(设计)任务书
  11. 旧BugkuCTF—部分wp
  12. Redis6:第六章:(2)Redis6 新数据类型:HyperLogLog
  13. python镜像安装re模块_Python模块之re模块
  14. 怎么免费获取帆软9.0激活码,帆软8.0激活码,如何激活
  15. PS在园林计算机辅助设计中有哪些应用,计算机辅助设计在园林设计中的运用
  16. Skywalking概述
  17. 基于C#的工控上位机软件开发从入门到学废,需要几步?
  18. androidkiller java sdk环境_AndroidKiller 编译问题
  19. 印尼爪哇岛的火山(图)
  20. 建立自己的网络电话服务器

热门文章

  1. 24点游戏(python)
  2. win10未启动对远程服务器启动,win10系统连接远程提示未启用对服务器的远程访问的操作技巧...
  3. 前端切图+网页排版的注意事项和经验分享
  4. kubevirt(一)虚拟化技术
  5. RS/CQI/SINR/RSRP/RSSI都是什么意思?
  6. 农夫山泉,它欺骗我们了吗?
  7. 【数学建模】三维曲面绘图 | matlab
  8. 传智杯2021年第三届传智杯全国大学生IT技能大赛(决赛B组)python小白解题思路
  9. 肇庆PCR实验室建设消毒事项汇总
  10. 探讨:Mac真的有必要安装双系统吗