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 相关文章推荐
浅析两列自适应布局的3种思路
May 03 HTML / CSS
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
Aug 18 HTML / CSS
CSS3提交意见输入框样式代码
Oct 30 HTML / CSS
CSS3按钮鼠标悬浮实现光圈效果源码
Sep 11 HTML / CSS
css3 盒模型以及box-sizing属性全面了解
Sep 20 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
纯css实现照片墙3D效果的示例代码
Nov 13 HTML / CSS
CSS3 border-radius圆角的实现方法及用法详解
Sep 14 HTML / CSS
HTML5 embed标签定义和用法详解
May 09 HTML / CSS
详解HTML5中的元素与元素
Aug 17 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
May 15 HTML / CSS
详解盒子端CSS动画性能提升
May 24 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过滤html标记属性类用法实例
2014/09/23 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP获取文件行数的方法
2015/06/10 PHP
php源码的安装方法和实例
2019/09/26 PHP
Javascript中的arguments与重载介绍
2015/03/15 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
Python编码类型转换方法详解
2016/07/01 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
会计与出纳自荐书范文
2014/03/16 职场文书
教职工代表大会主持词
2014/04/01 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
教师考核评语大全
2014/12/31 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
任命书标准格式
2015/03/02 职场文书
长江七号观后感
2015/06/11 职场文书
预备党员表决心的话
2015/09/22 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python