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 给背景设置渐变色的方法
Sep 12 HTML / CSS
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
Mar 17 HTML / CSS
CSS3实现点击放大的动画实例代码
Feb 27 HTML / CSS
CSS3 @keyframes简单动画实现
Feb 24 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
X/HTML5 和 XHTML2
Oct 17 HTML / CSS
仿酷狗html5手机音乐播放器主要部分代码
May 15 HTML / CSS
html5基础教程常用技巧整理
Aug 20 HTML / CSS
极简的HTML5模版
Jul 09 HTML / CSS
HTML5实现桌面通知 提示功能
Oct 11 HTML / CSS
canvas 阴影和图形变换的示例代码
Jan 02 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
Mar 20 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
js 模拟气泡屏保效果代码
2010/07/10 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
详解Angular 开发环境搭建
2017/06/22 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
Python SQLite3数据库操作类分享
2014/06/10 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python  logging日志打印过程解析
2019/10/22 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
Python对wav文件的重采样实例
2020/02/25 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
计算机网络专业求职信
2014/06/05 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
运动会表扬稿
2015/01/16 职场文书