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 相关文章推荐
CSS心形加载的动画源码的实现
Mar 09 HTML / CSS
css3背景_动力节点Java学院整理
Jul 11 HTML / CSS
利用CSS3实现平移动画效果示例代码
Oct 12 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 HTML / CSS
HTML5 Canvas中绘制椭圆的4种方法
Apr 24 HTML / CSS
HTML5拖拽的简单实例
May 30 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
Sep 09 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
Jun 10 HTML / CSS
CSS实现五种常用的2D转换
Dec 06 HTML / CSS
HTML实现仿Windows桌面主题特效的实现
Jun 28 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
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
AngularJS基础知识
2014/12/21 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
整理Python中的赋值运算符
2015/05/13 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
Python对象的属性访问过程详解
2020/03/05 Python
django项目中新增app的2种实现方法
2020/04/01 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
Django 实现图片上传和下载功能
2020/12/31 Python
幼儿园小班评语大全
2014/04/17 职场文书
村容村貌整治方案
2014/05/21 职场文书
施工质量承诺书范文
2014/05/30 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
个人汇报材料范文
2014/12/30 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫