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动画效果之animation的常用样式
Mar 09 HTML / CSS
CSS3中动画属性transform、transition和animation属性的区别
Sep 25 HTML / CSS
使用 css3 transform 属性来变换背景图的方法
May 07 HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
May 22 HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
Dec 12 HTML / CSS
用canvas做一个DVD待机动画的实现代码
Apr 12 HTML / CSS
Html5实现首页动态视频背景的示例代码
Sep 25 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
Sep 15 HTML / CSS
HTML页面中使两个div并排显示的实现
May 15 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
php常用正则函数实例小结
2016/12/29 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
JS实现简单打字测试
2020/06/24 Javascript
python连接字符串的方法小结
2015/07/13 Python
import的本质解析
2017/10/30 Python
Python合并多个Excel数据的方法
2018/07/16 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
opencv实现图像几何变换
2021/03/24 Python
医学检验专业个人求职信范文
2013/12/04 职场文书
初中女生自我鉴定
2013/12/19 职场文书
行政副总岗位职责
2014/02/23 职场文书
公司新年寄语
2014/04/04 职场文书
婚前保证书
2014/04/29 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
我的长征观后感
2015/06/09 职场文书
教师教育教学随笔
2015/08/15 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python