JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例


Posted in Javascript onJanuary 26, 2016

本文实例讲述了JavaScript+html5 canvas绘制的圆弧荡秋千效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例

具体代码如下:

<!DOCTYPE html>
<html>
 <head>
  <title>demo</title>
  <style type="text/css">
   #canvas {
    margin:50px; border:5px solid gray; box-shadow:0px 0px 5px 5px #494949;
   }
  </style>
 </head>
 <body>
  <canvas id="canvas" width="500px" height="500px"></canvas>
 </body>
 <script type="text/javascript">
  var canvas = document.getElementById("canvas");
  var ctx = canvas.getContext("2d");
  var r_x = 250, r_y = 0;
  var offset_h = 250;
  var offset_w = 500;
  var count = 0;
  var mode = "up";
  var temp = 0;
  var getRPoint = function(x, y) {
   var r = (Math.pow(x, 2) + Math.pow(y, 2)) / (2 * y);
   var point = {
    x: x,
    y: Math.abs(250 - (r - y)),
    r: r
   };
   return point;
  };
  function arc(attrs) {
   ctx.beginPath();
   ctx.arc(attrs.x, attrs.y, attrs.r, attrs.startAngle || 0, attrs.endAngle || Math.PI);
   ctx.stroke();
  }
  var interval = setInterval(function() { 
   count++;
   switch(mode) {
    case "up":
     temp = count;
     ctx.clearRect(0, 0, 500, 500);
     if(count%18 == 0) {
      mode = "down";
      return;
     } 
    break;
    case "down":
     temp = 36 - count;
     ctx.clearRect(0, 0, 500, 500);
     if(count%36 == 0) {
      mode = "default";
      return;
     }     
    break;
    case "default":
     temp = count - 36;
     if(count%54 == 0) {
      mode = "up";
      count = 0;
      return;
     }
   }
   arc(getRPoint(250, 250-8*temp));
  }, 100);
 </script>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
实现图片预加载的三大方法及优缺点分析
Nov 19 Javascript
Jquery 全选反选实例代码
Nov 19 Javascript
js确认框confirm()用法实例详解
Jan 07 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
js生成随机数方法和实例
Jan 17 Javascript
JavaScript中splice与slice的区别
May 09 Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
webstorm添加*.vue文件支持
May 08 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 #Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 #Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 #Javascript
基于JavaScript如何制作遮罩层对话框
Jan 26 #Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 #Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 #Javascript
基于canvas实现的绚丽圆圈效果完整实例
Jan 26 #Javascript
You might like
php中字符集转换iconv函数使用总结
2014/10/11 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
详解python时间模块中的datetime模块
2016/01/13 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
基于python实现操作redis及消息队列
2020/08/27 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
python实现猜拳游戏项目
2020/11/30 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
公司成立感言
2014/01/11 职场文书
学习自我鉴定
2014/02/01 职场文书
自荐信的基本格式
2014/02/22 职场文书
企业文化标语口号
2014/06/09 职场文书
2014年中秋寄语
2014/08/11 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书