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中的一些定位属性[图解]
Jul 14 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 Javascript
html向js方法传递参数具体实现
Aug 08 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
解析Angular 2+ 样式绑定方式
Jan 15 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
一看就会的vuex实现登录验证(附案例)
Jan 09 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中一些可能会被忽略的问题
2013/06/21 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
OpenLayers3实现图层控件功能
2020/09/25 Javascript
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Numpy之reshape()使用详解
2019/12/26 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
11月红领巾广播稿
2014/01/17 职场文书
办公室岗位职责
2014/02/12 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android