canvas绘制万花筒效果(代码分享)


Posted in Javascript onJanuary 20, 2017

话不多说,请看代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>万花筒</title>
<style>
canvas{
 background:#eee;
 }
</style>
<script>
window.onload = function(){
 var canvas = document.getElementById("canvas");
 var cobj = canvas.getContext("2d");
 var arr = [];
 var t=setInterval(function(){
  cobj.clearRect(0,0,600,600);
   for(var i=0;i<arr.length;i++){
  cobj.save();
  cobj.translate(300,300);
  cobj.scale(arr[i].scales,arr[i].scales);
  cobj.rotate(arr[i].angle*Math.PI/180);
  cobj.fillStyle = arr[i].color;
  cobj.fillRect(arr[i].num,arr[i].num,30,30);
  cobj.restore();
 }
 },50);
 setInterval(function(){
  for(var i=0;i<arr.length;i++){
    if(arr[i].num<=0){
   arr.splice(i,1);
   continue;
  }
  arr[i].angle+=2;
  arr[i].num-=0.2;
  arr[i].scales-=0.002;
  if(arr[i].scales<=0.2){
   arr[i].scales=0.2;
   }
  }
  },50);
 setInterval(function(){
  var rect = {angle:0,num:150,scales:1,color:"rgb("+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+")"};
  arr.push(rect);
  },600);
 }
</script>
</head>
<body>
<canvas width="600" height="600" id="canvas"></canvas>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript Discuz代码中的msn聊天小功能
May 25 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
JavaScript 动态加载脚本和样式的方法
Apr 13 Javascript
JavaScript中各种引用类型的常用操作方法小结
May 05 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
Jun 15 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
Vue原理剖析 实现双向绑定MVVM
May 03 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
详解angularjs4部署文件过大解决过程
Dec 05 Javascript
axios如何取消重复无用的请求详解
Dec 15 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
Jan 20 #Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 #Javascript
轻松理解Javascript变量的相关问题
Jan 20 #Javascript
js+css3实现旋转效果
Jan 20 #Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 #Javascript
浅谈angularjs $http提交数据探索
Jan 20 #Javascript
原生js实现无限循环轮播图效果
Jan 20 #Javascript
You might like
PHP脚本的10个技巧(8)
2006/10/09 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
在微信小程序中保存网络图片
2019/02/12 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python机器学习之贝叶斯分类
2018/03/26 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Django nginx配置实现过程详解
2020/09/10 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
岗位职责风险点
2014/03/12 职场文书
买房子个人收入证明
2014/10/12 职场文书
大四学生个人总结
2015/02/15 职场文书
电影雷锋观后感
2015/06/10 职场文书
实践论读书笔记
2015/06/29 职场文书