国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Canvas放置反彈效果隨機圖形(實例)

2019-11-19 15:46:09
字體:
來源:轉載
供稿:網友

Canvas放置反彈效果隨機圖形(實例)

var raf;  var arror = [];  var running = false;  //繪制圓形  function createBall() {    return {      x: 0,      y: 0,      vx: 10-Math.random()*10,      vy: 10-Math.random()*10,      radius: 25,      color:"red",      draw: function() {        ctx.beginPath();        ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);        ctx.closePath();        ctx.fillStyle = this.color;        ctx.fill();      }    }  }  //繪制正方形  function createSquare() {    return {      x: 0,      y: 0,      vx: 10-Math.random()*10,      vy: 10-Math.random()*10,      color:"red",      draw: function() {        ctx.beginPath();        ctx.fillStyle = this.color;        ctx.fillRect(this.x, this.y,30, 30);        ctx.closePath();      }    }  }  //繪制五角星  function createStar() {    return {      x: 0,      y: 0,      vx: 10-Math.random()*10,      vy: 10-Math.random()*10,      color:"red",      draw: function() {        ctx.font = "24px serif";        ctx.textBaseline = "hanging";        ctx.fillStyle=this.color;        ctx.fillText("五角星",this.x, this.y);      }    }  }  //繪制三角形  function createTriangle() {    return {      x: 0,      y: 0,      vx: 10-Math.random()*10,      vy: 10-Math.random()*10,      color:"red",      draw: function() {        ctx.beginPath();        ctx.moveTo(this.x,this.y);        ctx.lineTo(this.x+25,this.y+25);        ctx.lineTo(this.x+25,this.y-25);        ctx.fillStyle=this.color;        ctx.fill();      }    }  }  //清除  function clear() {    ctx.fillStyle = 'rgba(255,255,255,0.3)';    ctx.fillRect(0,0,canvas.width,canvas.height);  }    //判斷圖形坐標是否超出畫布范圍  function draw() {    clear();    arror.forEach(function(ball, i){      ball.draw();      ball.x += ball.vx;      ball.y += ball.vy;      if (ball.y + ball.vy > canvas.height || ball.y + ball.vy < 0) {        ball.vy = -ball.vy;      }      if (ball.x + ball.vx > canvas.width || ball.x + ball.vx < 0) {        ball.vx = -ball.vx;      }    });    raf = window.requestAnimationFrame(draw);  }  canvas.addEventListener('click',function(e){    if (!running) {      raf = window.requestAnimationFrame(draw);      running = true;    }    var colorarr=["#000000","#7F7F7F","#880015","#ED1C24","#FF7F27","#FFF200","#22B14C","#00A2E8","#3F48CC","#A349A4","#B97A57","#FFAEC9","#B5E61D"];    var Graphics = ["Round","Square","Star","Triangle"];    var typexz=Graphics[Math.floor(Math.random()*4)];    var ball;    switch(typexz){      case "Round":        ball = createBall();        break;      case "Square":        ball = createSquare();        break;      case "Star":        ball = createStar();        break;      case "Triangle":        ball = createTriangle();        break;    }    ball.x = e.clientX;    ball.y = e.clientY;    ball.color = colorarr[Math.floor(Math.random() * 10 + 3)];    arror.push(ball);  });  draw(); document.addEventListener('keydown',function (e) {   if(e.keyCode==32){     event.preventDefault();     window.cancelAnimationFrame(raf);     running = false;   } })

以上這篇Canvas放置反彈效果隨機圖形(實例)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和林格尔县| 黑河市| 斗六市| 石景山区| 康马县| 民和| 平顺县| 恩平市| 龙海市| 岐山县| 双鸭山市| 仙桃市| 阆中市| 宾阳县| 贡觉县| 玛沁县| 黄平县| 荔浦县| 吐鲁番市| 花莲县| 乌拉特后旗| 泸西县| 龙门县| 罗平县| 乳山市| 梁河县| 吴忠市| 横山县| 新乡市| 香格里拉县| 巍山| 嘉善县| 青州市| 潞西市| 定陶县| 盐边县| 江源县| 黎平县| 昌黎县| 二手房| 台北市|