js实现canvas可交互点击的液体水流融合动画模拟效果代码
代码语言:html
所属分类:动画
代码描述:js实现canvas可交互点击的液体水流融合动画模拟效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> *{ margin: 0; padding: 0; overflow:hidden; } body { background:#333; } #reset { position: absolute; left:50%; top:10px; margin-left:-400px; background: #444; border: 1px solid #555; color: #888; padding: 6px 10px; cursor: pointer; opacity: 0.8; } #c { width:800px; height:376px; margin:0 auto; display:block; } #info { position:absolute; left:-1px; top:-1px; width:auto; max-width:380px; height:auto; background:#f2f2f2; border-bottom-right-radius:10px; } #top { background:#fff; width:100%; height:auto; position:relative; border-bottom:1px solid #eee; } p { font-family:Arial, sans-serif; color:#666; text-align:justify; font-size: 16px; margin:10px; } a { font-family:sans-serif; color:#444; text-decoration:none; font-size: 20px; } #site { float:left; margin: 10px; color: #38a; } #close { float:right; margin: 10px; } </style> </head> <body> <canvas id="c"> </canvas> <button id="reset">new colours</button> <div id="info"> <div id="top"> <a id="close" href="">close</a> </div> <p> <br> - Alter particles/groups with the GROUPS variable.<br><br> - Customize colours with GROUP_COLOURS.<br><br> - Use the mouse to move the fluid.<br><br> - Click anywhere to make water.<br><br> - Use one group for a more water-like effect.<br><br> </p> </div> <script> document.getElementById('close').onmousedown = function (e) { e.preventDefault(); document.getElementById('info').style.display = 'none'; return false; }; /* Settings */ var MOUSE_INFLUENCE = 5, GRAVITY_X = 0, GRAVITY_Y = 0, MOUSE_REPEL = false, GROUPS = [50, 50, 50], GROUP_COLOURS = ['rgba(97,160,232']; window.requestAnimFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); }; var fluid = function () { var ctx,width,height,num_x,num_y,particles,grid,meta_ctx,threshold = 220,play = false,spacing = 45,radius = 30,limit = radius * 0.66,textures,num_particles; var mouse = { down: false, x: 0, y: 0 }; var process_image = function () { var imageData = meta_ctx.getImageData(0, 0, width, height), pix = imageData.data; for (var i = 0, n = pix.length; i < n; i += 4) { pix[i + 3] < threshold && (pix[i + 3] /= 6); } ctx.putImageData(imageData, 0, 0); }; var run = function () { //var time = new Date().getTime(); meta_ctx.clearRect(0, 0, width, height); for (var i = 0, l = num_x * num_y; i < l; i++) grid[i].length = 0; var i = num_particles; while (i--) particles[i].first_process(); .........完整代码请登录后点击上方下载按钮下载查看
网友评论0