HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)


Posted in HTML / CSS onApril 10, 2014

效果图:
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)

方法一:

复制代码
代码如下:
<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="500" height="500">your browser does not support the canvas tag</canvas>
<script type="text/javascript">
var deg = 0;
var r = 30;
var rl = 100;
function drawTaiji() {
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var colorA = "rgb(0, 0, 0)";
var colorB = "red";

var px =Math.sin(deg)*r;
var py =Math.cos(deg)*r;
context.clearRect(0, 0, 300, 300);
context.beginPath();
context.fillStyle = colorA;
context.arc(rl, rl, 60, 0.5 * Math.PI +deg, 1.5 * Math.PI +deg, true);
context.closePath();
context.fill();
context.fillStyle = colorB;
context.beginPath();
context.arc(rl, rl, 60, 1.5* Math.PI +deg, 0.5 * Math.PI +deg, true);
context.closePath();
context.fill();
context.fillStyle = colorB;
context.beginPath();
context.arc(rl+px, rl-py, 30, 0.5 * Math.PI + deg, 1.5 * Math.PI + deg, true);
context.closePath();
context.fill();
context.fillStyle = colorA;
context.beginPath();
context.arc(rl-px, rl+py, 30, 1.5 * Math.PI + deg, 0.5 * Math.PI + deg, true);
context.closePath();
context.fill();
context.fillStyle = colorA;
context.beginPath();
context.arc(rl+px, rl-py, 8, 0, 2 * Math.PI, true);
context.closePath();
context.fill();
context.fillStyle = colorB;
context.beginPath();
context.arc(rl-px, rl+py, 8, 0, 2 * Math.PI, true);
context.closePath();
context.fill();
deg +=0.1;
}
setInterval(drawTaiji, 100);
</script> </p> <p></body>
</html>

方法二:

复制代码
代码如下:

<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="500" height="500" >your browser does not support the canvas tag </canvas>
<script type="text/javascript">
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");
var angle = 0;
var count = 360;
var clrA = '#000';
var clrB = 'red';

function taiji(x, y, radius, angle, wise) {
angleangle = angle || 0;
wisewise = wise ? 1 : -1;
ctx.save();
ctx.translate(x, y);
ctx.rotate(angle);
ctx.fillStyle = clrA;
ctx.beginPath();
ctx.arc(0, 0, radius, 0, Math.PI, true);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = clrB;
ctx.arc(0, 0, radius, 0, Math.PI, false);
ctx.fill();
ctx.fillStyle = clrB;
ctx.beginPath();
ctx.arc(wise * -0.5 * radius, 0, radius / 2, 0, Math.PI * 2, true);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = clrA;
ctx.arc(wise * +0.5 * radius, 0, radius / 2, 0, Math.PI * 2, false);
ctx.arc(wise * -0.5 * radius, 0, radius / 10, 0, Math.PI * 2, true);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = clrB;
ctx.arc(wise * +0.5 * radius, 0, radius / 10, 0, Math.PI * 2, true);
ctx.fill();
ctx.restore();
}

loop = setInterval(function () {
beginTag = true;
ctx.clearRect(0, 0, canvas.width, canvas.height);
taiji(200, 200, 50, Math.PI * (angle / count) * 2, true);
//taiji(350, 350, 50, Math.PI * ((count - angle) / count) * 2, false);
angle = (angle + 5) % count;
}, 50);
</script> </p> <p></body>
</html>


HTML / CSS 相关文章推荐
CSS3解决移动页面上点击链接触发色块的问题
Jun 03 HTML / CSS
css3过渡_动力节点Java学院整理
Jul 11 HTML / CSS
布局和排版教程 纯css3实现图片三角形排列
Oct 17 HTML / CSS
CSS3属性box-sizing使用指南
Dec 09 HTML / CSS
HTML5 Web 存储详解
Sep 16 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
Jan 30 HTML / CSS
用HTML5制作一个简单的弹力球游戏
May 12 HTML / CSS
HTML5 Canvas入门学习教程
Mar 17 HTML / CSS
浅谈h5自定义audio(问题及解决)
Aug 19 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
Aug 03 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
Apr 23 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
Aug 17 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
Apr 10 #HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
Apr 10 #HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
Apr 08 #HTML / CSS
为你的html5网页添加音效示例
Apr 03 #HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
Apr 02 #HTML / CSS
简单html5代码获取地理位置
Mar 31 #HTML / CSS
HTML5注册页面示例代码
Mar 27 #HTML / CSS
You might like
是否存在第一台收音机的说法
2021/03/01 无线电
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
js form action动态修改方法
2008/11/04 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
Python中bisect的用法
2014/09/23 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
python里运用私有属性和方法总结
2019/07/08 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
python import 上级目录的导入
2020/11/03 Python
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
股东大会通知
2015/04/24 职场文书
党员个人承诺书
2015/04/27 职场文书
在校证明模板
2015/06/17 职场文书
对象析构函数__del__在Python中何时使用
2022/03/22 Python
Android自定义双向滑动控件
2022/04/19 Java/Android