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 特效范例整理
Aug 22 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
Dec 03 HTML / CSS
CSS3不透明度实例讲解
Apr 26 HTML / CSS
CSS3实现3D翻书效果
Jun 20 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
css3实现背景动态渐变效果
Dec 10 HTML / CSS
HTML5的结构和语义(3):语义性的块级元素
Oct 17 HTML / CSS
HTML5的结构和语义(1):前言
Oct 17 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
Jan 31 HTML / CSS
HTML5实现晶莹剔透的雨滴特效
May 14 HTML / CSS
HTML5 Canvas绘制五星红旗
May 04 HTML / CSS
使用HTML5做的导航条详细步骤
Oct 19 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/17 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
Python易忽视知识点小结
2015/05/25 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
汽车维修专业个人求职信范文
2014/01/01 职场文书
合作意向书范本
2014/03/31 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
2015年团支部工作总结
2015/04/03 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python