全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Canvas放置反弹效果随机图形(实例)

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放置反弹效果随机图形(实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# Canvas放置反弹  # canvas实现动态小球重叠效果  # 给大家  # 角形  # 希望能  # 这篇  # 小编  # 大家多多  # closePath  # PI  # true  # createSquare  # fill  # fillStyle  # draw  # red  # arc  # beginPath  # ctx  # hanging  # textBaseline  # serif 


相关文章: 建站上传速度慢?如何优化加速网站加载效率?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  C#怎么使用委托和事件 C# delegate与event编程方法  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何撰写建站申请书?关键要点有哪些?  如何选择PHP开源工具快速搭建网站?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何通过IIS搭建网站并配置访问权限?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何通过老薛主机一键快速建站?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  如何选择高性价比服务器搭建个人网站?  宝塔建站无法访问?如何排查配置与端口问题?  网页设计与网站制作内容,怎样注册网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Bpmn 2.0的XML文件怎么画流程图  如何使用Golang安装API文档生成工具_快速生成接口文档  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  重庆市网站制作公司,重庆招聘网站哪个好?  网站制作话术技巧,网站推广做的好怎么话术?  如何在Windows服务器上快速搭建网站?  深入理解Android中的xmlns:tools属性  制作网站怎么制作,*游戏网站怎么搭建?  安徽网站建设与外贸建站服务专业定制方案  网站制作服务平台,有什么网站可以发布本地服务信息?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  建站主机系统SEO优化与智能配置核心关键词操作指南  建站之星会员如何解锁更多建站功能?  如何通过商城免费建站系统源码自定义网站主题?  如何在万网自助建站平台快速创建网站?  如何快速重置建站主机并恢复默认配置?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  建站三合一如何选?哪家性价比更高?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何用狗爹虚拟主机快速搭建网站?  建站之星价格显示格式升级,你的预算足够吗?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何用花生壳三步快速搭建专属网站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  建站之星代理平台如何选择最佳方案?  利用JavaScript实现拖拽改变元素大小  如何批量查询域名的建站时间记录? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。