绘制canvas彩色泡泡小球碰撞
来源:互联网 发布:原创歌词制作软件 编辑:程序博客网 时间:2024/05/01 20:54
globalCompositeOperation带来的不一样的烟花
一.知识点
1.动画:
setInterval(
function(){
draw(context);
update(canvas.width,canvas.height);
},
50
);
2.小球碰撞的状态:
ctx.globalCompositeOperation="xor";//lighter
二.代码
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body><canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;"> 当前浏览器不支持Canvas,请更换浏览器后再试</canvas><script> var balls = []; window.onload = function(){ var canvas = document.getElementById("canvas"); var context=canvas.getContext('2d'); canvas.width = 1200; canvas.height = 800; for(var i=0;i<100;i++){ var R=Math.floor(Math.random()*255);//可对一个数进行下舍入。0.1就是0 0.9就是1 var G=Math.floor(Math.random()*255); var B=Math.floor(Math.random()*255); var radius=Math.random()*50+20; aBall={ color:"rgb("+R+","+G+","+B+")", radius:radius, x:Math.random()*(canvas.width-2*radius)+radius, y:Math.random()*(canvas.height-2*radius)+radius, vx:(Math.random()*5+5)*Math.pow(-1,Math.floor(Math.random()*100)),//pow() 方法可返回 x 的 y 次幂的值。 vy:(Math.random()*5+5)*Math.pow(-1,Math.floor(Math.random()*100)) } balls[i]=aBall; } setInterval( function(){ draw(context); update(canvas.width,canvas.height); }, 50 ); } function draw(ctx){ var canvas = ctx.canvas; ctx.clearRect(0,0,canvas.width,canvas.height); for( var i = 0 ; i < balls.length ; i ++ ){ ctx.globalCompositeOperation="xor";//lighter ctx.fillStyle=balls[i].color; ctx.beginPath(); ctx.arc(balls[i].x,balls[i].y,balls[i].radius,0,2*Math.PI); ctx.closePath(); ctx.fill(); } } function update(canvasWidth, canvasHight){ for( var i = 0 ; i < balls.length ; i ++ ){ balls[i].x += balls[i].vx; balls[i].y += balls[i].vy; if( balls[i].x - balls[i].radius<=0 ){ balls[i].vx = -balls[i].vx; balls[i].x = balls[i].radius; } if( balls[i].x + balls[i].radius>=canvasWidth ){ balls[i].vx = -balls[i].vx; balls[i].x = canvasWidth-balls[i].radius; } if( balls[i].y - balls[i].radius<=0 ){ balls[i].vy = -balls[i].vy; balls[i].y = balls[i].radius; } if( balls[i].y + balls[i].radius>=canvasHight ){ balls[i].vy = -balls[i].vy; balls[i].y = canvasHight-balls[i].radius; } } }</script></body></html>
0 0
- 绘制canvas彩色泡泡小球碰撞
- Canvas绘制小球运动,检测碰撞变色
- Canvas绘制页面小球跳动
- Canvas绘制平抛小球效果
- h5 canvas绘制的旋转小球
- Canvas绘制小球(面向对象思想)
- [前端] canvas进阶之绘制彩色图像
- 第七讲:HTML5中的canvas两个小球完全弹性碰撞
- 编程苦手GW——OpenGL学习练习,相互碰撞的彩色小球
- 用canvas绘制“具有碰撞检测效果的运动五角星”
- 碰撞的小球
- JBox2D学习 - 小球碰撞
- HTML5+Javascript 小球碰撞
- HTML5小球物理碰撞
- java小球弹性碰撞
- flash小球碰撞
- Java版小球碰撞
- Java版小球碰撞
- mysql 添加时间列(用于记录创建时间和修改时间)
- Android开发笔记(一百零六)支付缴费SDK
- 优化Myshool第四章高级查询
- mysql-5.7.17免安装版环境搭建
- SpringMVC入门之十:异常的优化处理
- 绘制canvas彩色泡泡小球碰撞
- 白盒与黑盒测试的区别
- 理解快速傅里叶变换(FFT)算法
- HQL和原生SQL查询的数据类型问题
- std::unordered_map用法
- s2 第一本书第八章
- Android四种联网方式
- 安卓开发常用工具类utils
- Qt应用和错误笔记