随机对称生成的脸图【?】
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>orz</title> <meta name="description" content=""> <meta name="keywords" content=""> <link rel="stylesheet"> </head> <body style="text-align:center;background-color:#1e576b"> <div> <input type="text" id="dim" placeholder="dim"/> <input type="button" id="submit" value="submit"/> </div> <div style="margin:1em"><canvas id="logoCanvas"></canvas></div> </body> <script src="http://code.jquery.com/jquery-1.8.3.js"></script> <script type="text/javascript"> function draw(w, h) { var w = w || 8; var h = h || 8; var border = 12; var val = []; for (var i = 0; i < h; i += 1) { var str = []; for (var j = 0; j < w / 2; j += 1) { var rand = parseInt(Math.random() * 2); str[j] = rand; str[w - j] = rand; } val.push(str.join("")); console.log(str.join("")); } var canvas=document.getElementById('logoCanvas'); var fillWidth = border * w; var fillHeight = border * h; $(canvas).attr("height", fillHeight + "px"); $(canvas).attr("width", fillWidth + "px"); var ctx=canvas.getContext('2d'); ctx.clearRect(0, 0, fillWidth, fillHeight); for (var y = 0; y < h; y += 1) { for (var x = 0; x < w; x += 1) { ctx.fillStyle= val[y][x] == "1" ? '#000' : '#FFF'; console.log("x y v, %d %d %s", x, y, val[y][x]); ctx.fillRect(x * border, y * border, border, border); } } } $(document).ready(function() { draw(); $("#submit").click(function(){ var d = $("#dim").val(); draw(d, d); }); }); </script> </html>
唔……
囍
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body style="margin:0;" onload="start();"> <canvas id="_canvas"></canvas> </body> <script> // 烟火 function Fire(x, y, life, directionX, directionY) { this.x = x; this.y = y; this.life = life; this.frames = 0; // 帧数计时 this.directionX = directionX; this.directionY = directionY; this.color = "rgb(" + Math.floor(Math.random() * 128 + 128) + "," + Math.floor(Math.random() * 128 + 128) + "," + Math.floor(Math.random() * 128 + 128) +")"; } Fire.prototype = { // 行进 move : function() { this.x += this.directionX; this.y += this.directionY; this.directionX *= 0.94; this.directionY *= 0.94; this.directionY += 0.3; this.frames += 1; }, // 失效 powerOut : function() { return this.frames == this.life; }, x : function() { return this.x; }, y : function() { return this.y; }, color : function() { return this.color; } } // 烟花 function FirePackage(x, y) { this.x = x; this.y = y; this.fires = new Array(); } FirePackage.prototype = { createFires : function(num) { // 添加烟火 if (!num) { num = Math.floor(Math.random() * 50) + 10; } for (var i = 0; i < num; i += 1) { var life = Math.floor(Math.random() * 80) + 40; this.fires[i] = new Fire(this.x, this.y, life, Math.random() * 20 * (Math.random() * 10 >=5 ? (-1) : 1), Math.random() * 20 * (Math.random() * 10 >= 5 ? (-1) : 1)); } }, boom : function(ctx) { var powerOutCount = 0; if (this.powerOut()) { return; } for (var i = 0; i < this.fires.length; i += 1) { var fire = this.fires[i]; if (!fire.powerOut()) { fire.move(); ctx.fillStyle= fire.color; ctx.beginPath(); //console.clear(); //console.log("fire.x :" + fire.x, "fire.y:" + fire.y); //console.log("fire.color :" + fire.color); ctx.arc(fire.x,fire.y,5,0,Math.PI*2,true); ctx.closePath(); ctx.fill(); } else { powerOutCount += 1; } } if (powerOutCount == this.fires.length) { this.powerOutFlag = true; } }, powerOut : function() { return this.powerOutFlag ? true : false; } } </script> <script> var canvas = document.getElementById('_canvas'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; var ctx=canvas.getContext('2d'); var timeInterval; window.onresize = function() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; } var firePackages = new Array(); function createFirePackage(x, y) { var firePackage = new FirePackage(x, y); firePackage.createFires(); firePackages.push(firePackage); } var pushInterval; var pushFire = function() { clearInterval(pushInterval); createFirePackage(Math.random() * canvas.width , Math.random() * canvas.height); pushInterval = setInterval(pushFire, Math.random() * 1000 + 100); } function start() { var loop = function() { if (firePackages.length == 0) { createFirePackage(Math.random() * canvas.width , Math.random() * canvas.height); } var powerOutCount = 0; var border = 320; for (var i = 0; i < firePackages.length; i += 1) { var firePackage = firePackages[i]; ctx.fillStyle="rgba(0,0,0,0.1)"; ctx.fillRect(0,0,canvas.width,canvas.height); if (!firePackage.powerOut()) { firePackage.boom(ctx); } else { firePackages[i] = firePackages[firePackages.length - 1]; firePackages.pop(); } } var border = 360; ctx.fillStyle="rgba(255,0,0,1)"; ctx.font = border + "px 黑体"; ctx.fillText("囍",(canvas.width - border) / 2, border); } timeInterval = setInterval(loop, 10); pushFire(); loop(); } </script> </html>