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 相关文章推荐
javascript 表格排序和表头浮动效果(扩展SortTable)
Apr 07 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
Mar 28 Javascript
js替代copy(示例代码)
Nov 27 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
JavaScript Date 知识浅析
Jan 29 Javascript
超全面的vue.js使用总结
Feb 12 Javascript
浅析Visual Studio Code断点调试Vue
Feb 27 Javascript
vue2.0安装style/css loader的方法
Mar 14 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
Sep 14 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
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
使用无限生命期Session的方法
2006/10/09 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
10个php函数实用却不常见
2015/10/13 PHP
JS:window.onload的使用介绍
2013/11/13 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
写自荐信要注意什么
2013/12/26 职场文书
我为自己代言广告词
2014/03/18 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
个人授权委托书模板
2014/09/14 职场文书
秋冬农业生产标语
2014/10/09 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
投标承诺函范文
2015/01/21 职场文书
员工辞职信范文
2015/03/02 职场文书
党员自我评价2015
2015/03/03 职场文书
浅谈python中的多态
2021/06/15 Python
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python