canvas流星劃過星空效果程式碼例項
分享一段程式碼例項,它實現了流星劃過星空效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { margin: 0; padding: 0; } html, body { height: 100%; } body { background: linear-gradient(to bottom, #131313 0%,#02101c 100%); } .canvas-box { position: fixed; left: 0; top: 0; z-index: -1; } a:link, a:hover, a:visited, a:active { text-decoration: none; color: inherit; display: block; } a { margin: 30px 0; font-size: 20px; } </style> </head> <body> <div class="canvas-box"> <canvas id="canvas">你的瀏覽器不支援canvas</canvas> </div> <script> var WINDOW_WIDTH = document.body.offsetWidth; var WINDOW_HEIGHT = document.body.offsetHeight; var canvas, context; var num = 500; var stars = []; var mouseX = WINDOW_WIDTH / 2; var mouseY = WINDOW_HEIGHT / 2; var rnd; window.onload = function() { canvas = document.getElementById('canvas'); canvas.width = WINDOW_WIDTH; canvas.height = WINDOW_HEIGHT; context = canvas.getContext('2d'); addStar(); setInterval(render, 33); liuxing(); // render(); document.body.addEventListener('mousemove', mouseMove); } function liuxing() { var time = Math.round(Math.random() * 3000 + 33); setTimeout(function() { rnd = Math.ceil(Math.random() * stars.length) liuxing(); }, time) } function mouseMove(e) { //因為是整屏背景,這裡不做座標轉換 mouseX = e.clientX; mouseY = e.clientY; } function render() { context.fillStyle = 'rgba(0,0,0,0.1)'; context.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); // context.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT) for (var i = 0; i < num; i++) { var star = stars[i]; if (i == rnd) { star.vx = -5; star.vy = 20; context.beginPath(); context.strokeStyle = 'rgba(255,255,255,' + star.alpha + ')'; context.lineWidth = star.r; context.moveTo(star.x, star.y); context.lineTo(star.x + star.vx, star.y + star.vy); context.stroke(); context.closePath(); } star.alpha += star.ra; if (star.alpha <= 0) { star.alpha = 0; star.ra = -star.ra; star.vx = Math.random() * 0.2 - 0.1; star.vy = Math.random() * 0.2 - 0.1; } else if (star.alpha > 1) { star.alpha = 1; star.ra = -star.ra } star.x += star.vx; if (star.x >= WINDOW_WIDTH) { star.x = 0; } else if (star.x < 0) { star.x = WINDOW_WIDTH; star.vx = Math.random() * 0.2 - 0.1; star.vy = Math.random() * 0.2 - 0.1; } star.y += star.vy; if (star.y >= WINDOW_HEIGHT) { star.y = 0; star.vy = Math.random() * 0.2 - 0.1; star.vx = Math.random() * 0.2 - 0.1; } else if (star.y < 0) { star.y = WINDOW_HEIGHT; } context.beginPath(); var bg = context.createRadialGradient(star.x, star.y, 0, star.x, star.y, star.r); bg.addColorStop(0, 'rgba(255,255,255,' + star.alpha + ')') bg.addColorStop(1, 'rgba(255,255,255,0)') context.fillStyle = bg; context.arc(star.x, star.y, star.r, 0, Math.PI * 2, true); context.fill(); context.closePath(); } } function addStar() { for (var i = 0; i < num; i++) { var aStar = { x: Math.round(Math.random() * WINDOW_WIDTH), y: Math.round(Math.random() * WINDOW_HEIGHT), r: Math.random() * 3, ra: Math.random() * 0.05, alpha: Math.random(), vx: Math.random() * 0.2 - 0.1, vy: Math.random() * 0.2 - 0.1 } stars.push(aStar); } } </script> </body> </html>
相關文章
- css3星空效果程式碼例項CSSS3
- canvas火焰效果程式碼例項Canvas
- canvas字母雨效果程式碼例項Canvas
- canvas載入效果程式碼例項Canvas
- canvas擺動效果程式碼例項Canvas
- canvas水位進度效果程式碼例項Canvas
- canvas原型鐘錶效果程式碼例項Canvas原型
- canvas氣泡上浮效果程式碼例項Canvas
- canvas田字格效果程式碼例項Canvas
- canvas繪製圓環效果程式碼例項Canvas
- canvas螞蟻線效果程式碼例項Canvas
- canvas繪製流星效果Canvas
- css3帶有光暈的流星效果程式碼例項CSSS3
- canvas蔚藍星空效果Canvas
- canvas模擬彈幕效果程式碼例項Canvas
- canvas繪製箭頭效果程式碼例項Canvas
- canvas繪製夜空小屋效果程式碼例項Canvas
- canvas繪製鐘錶效果程式碼例項Canvas
- canvas繪製橢圓效果程式碼例項Canvas
- canvas實現的驗證碼效果程式碼例項Canvas
- canvas繪製魚吃豆效果程式碼例項Canvas
- canvas實現煙花燃放效果程式碼例項Canvas
- canvas繪製雪花飄落效果程式碼例項Canvas
- canvas實現的鋸齒效果程式碼例項Canvas
- canvas實現的鐘表效果程式碼例項Canvas
- 利用canvas實現的驗證碼效果程式碼例項Canvas
- canvas實現的雪花飄落效果程式碼例項Canvas
- canvas實現的藍色雨滴效果程式碼例項Canvas
- canvas實現的彈力小球效果程式碼例項Canvas
- canvas刮刮樂程式碼例項Canvas
- canvas實現的七巧板效果程式碼例項Canvas
- canvas實現的動態心形效果程式碼例項Canvas
- canvas實現的圓形鐘錶效果程式碼例項Canvas
- canvas實現的簡單畫板效果程式碼例項Canvas
- canvas實現文字線性漸變效果程式碼例項Canvas
- canvas畫圖程式碼例項Canvas
- canvas小遊戲程式碼例項Canvas遊戲
- css3實現滑鼠懸浮劃過光弧效果程式碼例項CSSS3