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 相关文章推荐
常用js脚本
Dec 03 Javascript
23个超流行的jQuery相册插件整理分享
Apr 25 Javascript
JavaScript 的继承
Oct 01 Javascript
jQuery实现数字加减效果汇总
Dec 16 Javascript
JQuery实现防止退格键返回的方法
Feb 12 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
jQuery事件_动力节点Java学院整理
Jul 05 jQuery
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 Javascript
Js和VUE实现跑马灯效果
May 25 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
dedecms中使用php语句指南
2014/11/13 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
PHP Reflection API详解
2015/05/12 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
js转义字符介绍
2013/11/05 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
Python入门篇之列表和元组
2014/10/17 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
python 画函数曲线示例
2019/12/04 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
委托证明的格式
2014/01/10 职场文书
生活部的活动方案
2014/08/19 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
介绍信怎么写
2015/01/30 职场文书
2015年采购工作总结
2015/04/10 职场文书
小王子读书笔记
2015/06/29 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL