canvas之万花筒效果的简单实现(推荐)


Posted in HTML / CSS onAugust 16, 2016

canvas也有css3里transform的变换功能,transform的底层运算的方式是运用了线性代数里矩阵,而矩阵是在我们的生活实践中会经常被使用,它可以把复杂的空间问题呈现出来,它还有很多实践的地方,然后不懂它的人会觉得很难,如果要钻研,这方面知识是不能少的。

canvas里封装好的变换函数:scale()、rotate()、translate()、transform()、setTransform();而它们只要传数字进去即可,单位不用传,还有这里角度单位是弧度,这些是与css里的区别,transform()、setTransform();在与这个变换都有个记忆保存叠加的功能,而setTransform()帮

你消除这些功能了,换句话说,setTransform() 允许您缩放、旋转、移动并倾斜当前的环境。

至于使用方式到w3c里查手册。

接下来效果图:

canvas之万花筒效果的简单实现(推荐)

代码:

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>canvas</title>  
  6.     <style>  
  7.     body{   
  8.         background: #eee;   
  9.     }   
  10.     canvas{   
  11.         background: #fff;   
  12.     }   
  13.     </style>  
  14. </head>  
  15. <body>  
  16.     <canvas width="800" height="800"></canvas>  
  17.     <script>  
  18.     var oCas=document.getElementsByTagName("canvas")[0];   
  19.     var cas=oCas.getContext("2d");   
  20.     var arr=[];   
  21.   
  22.     /*绘制数据内容*/   
  23.     setInterval(function(){   
  24.         cas.clearRect(0,0,800,800);   
  25.         for(var i=0;i<arr.length;i++){   
  26.             cas.save();   
  27.             cas.beginPath();   
  28.             cas.translate(400,400);   
  29.             cas.rotate(arr[i].num*Math.PI/180);   
  30.             cas.scale(arr[i].num2,arr[i].num2);   
  31.             cas.fillStyle=arr[i].color;   
  32.             cas.rect(arr[i].num1,0,20,20);   
  33.             cas.fill();   
  34.             cas.restore();   
  35.             if(arr[i].num1<=0){   
  36.                 arr.splice(i,1);   
  37.             }else{   
  38.                 arr[i].num++;   
  39.                 arr[i].num2-=0.0015;   
  40.                 arr[i].num1-=0.4;   
  41.             }   
  42.         }   
  43.     },60);   
  44.   
  45.     /*存储数据*/   
  46.     setInterval(function(){   
  47.         var obj={   
  48.             "num":0,   
  49.             "num1":300,   
  50.             "num2":1,   
  51.             "color":"rgb("+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+")"   
  52.         };   
  53.         arr.push(obj);   
  54.     },1000);   
  55.   
  56.     </script>  
  57. </body>  
  58. </html>  

要多个图形输出可以先使用个数组把数据存起来,然后循环画出数据的内容,最后在数据循环完后就清除掉画布,加上变换的值得变化,这样就可以做到动画的效果。

以上这篇canvas之万花筒效果的简单实现(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3实现超立体3D图片侧翻倾斜效果
Apr 16 HTML / CSS
纯CSS改变webkit内核浏览器的滚动条样式
Apr 17 HTML / CSS
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
May 07 HTML / CSS
用CSS3打造HTML5的Logo(实现代码)
Jun 16 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
Jul 05 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
Apr 24 HTML / CSS
CSS3 创建网页动画实现弹跳球动效果
Oct 30 HTML / CSS
浅谈cookie和localStorage那些事
Aug 27 HTML / CSS
canvas 实现 github404动态效果的示例代码
Nov 15 HTML / CSS
Canvas绘制浮动球效果的示例
Dec 29 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
Sep 08 HTML / CSS
HTML5页面音频自动播放的实现方式
Jun 21 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
Aug 15 #HTML / CSS
css3 media 响应式布局的简单实例
Aug 03 #HTML / CSS
css3的过滤效果简单实例
Aug 03 #HTML / CSS
CSS3实现滚动条动画效果代码分享
Aug 03 #HTML / CSS
关于box-sizing的全面理解
Jul 28 #HTML / CSS
css3动画效果小结(推荐)
Jul 25 #HTML / CSS
浅谈CSS3动画的回调处理
Jul 21 #HTML / CSS
You might like
PHP系统命令函数使用分析
2013/07/05 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
深入探究node之Transform
2017/07/20 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
优秀通讯员事迹材料
2014/01/28 职场文书
公司晚会主持词
2014/03/22 职场文书
爱情保证书大全
2014/04/29 职场文书
仲裁协议书
2014/09/26 职场文书
离婚案件答辩状
2015/05/22 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
德劲DE1108畅想
2021/04/22 无线电
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
python实现局部图像放大
2021/11/17 Python