canvas动画利用函数波动特点制作水波动画

<canvas id="myCanvas" width="500" height="400" style="border:0px double #996633;"></canvas>

var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
var i=0;
setInterval(move,30);
function move(){

  ctx.clearRect(0,0,canvas.width,canvas.height);

  var dig=Math.PI/24;
  var colorArr = ['red','yellow','green','blue','purple']
  var colorIndex = 0
  for (k=0;k<=14;k++){

    for (n=0;n<=17;n++){
      colorIndex++
      if (colorIndex >= 5) {
        colorIndex = 0
      }
      ctx.fillStyle = colorArr[colorIndex]
      x0=30*n;
      y0=30*k;
      var x=24*Math.sin((i+k*2+n*3)*dig)+x0;
      var y=24*Math.cos((i+k*2+n*3)*dig)+y0;
      ctx.beginPath();
      ctx.arc(x,y,8,0,Math.PI*2,true);
      ctx.closePath();
      ctx.fill();
    }
   }

   i=i+1;
   if (i>=48) i=0;
 }

直接可复制代码查看效果

最新文章

  1. C# MVC 5 - 生命周期(应用程序生命周期&amp;请求生命周期)
  2. java多线程-锁
  3. SharePoint Calculated Columns 分类: Sharepoint 2015-07-09 01:49 8人阅读 评论(0) 收藏
  4. 打包java项目为可执行程序(exe)
  5. [moka同学笔记]yii2.0缓存
  6. CentOS6.5配置python开发环境之一:CentOS图形化界面显示
  7. Pascal 语言中二维数组:矩阵问题
  8. [LeetCode] #1# Two Sum : 数组/哈希表/二分查找/双指针
  9. iBatis2之SqlMap配置总结(18条)
  10. ngrok 本机代码部署外网访问神器(转)
  11. 低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端
  12. fpm 制作 rpm 包
  13. 关于栈、队列、优先队列的应用——UVa11995
  14. matplotlib-区域填充
  15. c# word操作
  16. Ubuntu12.04下Qt连接MySQL数据库
  17. 转:GestureDetector: GestureDetector 基本使用
  18. R语言 vegan包计算物种累计曲线
  19. Task 5.1 电梯调度程序需求调研报告
  20. PLSA-概率潜语义分析(二)

热门文章

  1. YoyoGo v1.7.2 发布, 支持 Nacos &amp; Apollo 配置中心
  2. linux命令基础(一课)
  3. Redis与DB的数据一致性解决方案(史上最全)
  4. CyclicBarrier 原理(秒懂)
  5. Java语言实现二维码的生成
  6. MySQL 数据库设计的“奥秘”
  7. 01-Tkinter教程-窗口的管理与设置
  8. 制作 Cocoapods 库
  9. hdu 6048 Puzzle 拼图 逆序数
  10. Linux Netfilter框架分析