使用canvas的convas来实现围绕旋转动画,外圈顺时针,里层逆时针

代码demo链接地址 代码demo链接地址

html文件

<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>body {margin: 0;padding: 0;overflow: hidden;background-color: #f0f0f0;}</style><script src="js/konva.js"></script><script src="js/circle.js"></script>
</head>
<body>
<div id="cas"></div><script>var width = window.innerWidth;var height = window.innerHeight;//创建舞台var stage = new Konva.Stage({container: "cas",width: width,height: height});//创建层var layer = new Konva.Layer();//创建组1var group = new Konva.Group({x: stage.width() / 2,y: stage.height() / 2,});//最外层圆var circle1 = new Konva.Circle({x: 0,y: 0,radius: 250,stroke: "#ccc",strokeWidth: 1,dash: [6, 3]});group.add(circle1);//第二个圆var circle2 = new Konva.Circle({x: 0,y: 0,radius: 150,stroke: "#ccc",strokeWidth: 1,dash: [6, 3]});group.add(circle2);//第三个圆var circle3 = new Konva.Circle({x: 0,y: 0,radius: 135,stroke: "blue",strokeWidth: 2,dash: [10, 5]});group.add(circle3);//第四个圆var circle4 = new Konva.Circle({x: 0,y: 0,radius: 105,fill: "#ccc",opacity: 0.4});group.add(circle4);//第五个圆var circle5 = new Konva.Circle({x: 0,y: 0,radius: 80,fill: "#74A2F0"});group.add(circle5);//添加文字var text = new Konva.Text({x: -80,y: -12,text: "WEB全栈",fill: "white",fontSize: 24,width: 160,align: "center"});group.add(text);layer.add(group);//*****************************************************//创建组2var outGroup = new Konva.Group({x: stage.width() / 2,y: stage.height() / 2,});var arrColor = ["red", "green", "blue", "orange", "purple"];var arrText = ["web", "node.js", "ajax", "html5", "css"];for(var i = 0; i < 5; i++) {var cir = new Circle({x : 250 * Math.cos(72 * i * Math.PI / 180), //圆心x轴的坐标y : 250 * Math.sin(72 * i * Math.PI / 180), //圆心y轴的坐标outR :  60,  //外圆的半径inR :  50,    //内圆的半径fill : arrColor[i],  //填充颜色text: arrText[i],    //文字outOpacity : 0.3,   //外圆的透明度inOpacity : 0.6      //内圆的透明度});cir.drawCircle(outGroup);}layer.add(outGroup);//***********************************************//创建组3var inGroup = new Konva.Group({x: stage.width() / 2,y: stage.height() / 2,});var arrColor = ["red", "green", "blue", "orange", "purple"];var arrText = ["web", "node.js", "ajax", "html5", "css"];for(var i = 0; i < 5; i++) {var cir = new Circle({x : 135 * Math.cos(90 * i * Math.PI / 180), //圆心x轴的坐标y : 135 * Math.sin(90 * i * Math.PI / 180), //圆心y轴的坐标outR :  45,  //外圆的半径inR :  35,    //内圆的半径fill : arrColor[i],  //填充颜色text: arrText[i],    //文字outOpacity : 0.3,   //外圆的透明度inOpacity : 0.6      //内圆的透明度});cir.drawCircle(inGroup);}layer.add(inGroup);//************************************************//运动动画var step = 1; //转动的角度var anim = new Konva.Animation(function() {outGroup.rotate(step);outGroup.getChildren().each(function (ele, index) {ele.rotate(-step);});inGroup.rotate(-step);inGroup.getChildren().each(function (ele, index) {ele.rotate(step);});}, layer);anim.start();stage.add(layer);stage.on("mouseover", function () {step = 0.3;});stage.on("mouseout", function () {step = 1;});
</script>
</body>
</html>

js文件

function Circle(obj) {this._init(obj);
}
Circle.prototype = {_init: function (obj) {this.x = obj.x, //圆心x轴的坐标this.y = obj.y, //圆心y轴的坐标this.outR =  obj.outR,  //外圆的半径this.inR =  obj.inR,    //内圆的半径this.color = obj.fill,  //填充颜色this.text = obj.text,   //内圆的文字this.outOpacity = obj.outOpacity,   //外圆的透明度this.inOpacity = obj.inOpacity      //内圆的透明度},drawCircle: function (group) {//创建一个组var groupCir = new Konva.Group({x: this.x,y: this.y});//外圆var outCir = new Konva.Circle({x: 0,y: 0,radius: this.outR,fill: this.color,opacity: this.outOpacity});groupCir.add(outCir);//内圆var inCir = new Konva.Circle({x: 0,y: 0,radius: this.inR,fill: this.color,opacity: this.inOpacity});groupCir.add(inCir);//添加文字var text = new Konva.Text({x: -this.inR,y: -10,text: this.text,fill: "white",fontSize: 20,width: 2 * this.inR,align: "center"});groupCir.add(text);group.add(groupCir);}
}

效果图片:

用canvas实现围绕旋转动画相关推荐

  1. android旋转动画和平移动画具体解释,补充说一下假设制作gif动画放到csdn博客上...

    先上效果图: 我这里用的是GifCam来制作的gif动画,能够在http://download.csdn.net/detail/baidu_nod/7628461下载, 制作过程是先起一个模拟器,然后 ...

  2. android 左移动画_android旋转动画和平移动画详解,补充说一下如果制作gif动画放到csdn博客上...

    先上效果图: 制作过程是先起一个模拟器,然后把GifCam的框拖到模拟器上面,点击Rec的new先,然后点击Rec,然后就save到本地成gif文件 这里做一个左右旋转,上下旋转,和左右移动的动画,先 ...

  3. css3加js 3d旋转动画 围绕旋转 根据请求后台的数据动态渲染

    3d 围绕旋转 <style>body {height: auto !important;background-color: #020432;}html{height: auto !imp ...

  4. CSS3 skew倾斜、rotate旋转动画

    css3出现之前,我们实现一个对象的一组连续动画需要通过JavaScript或Jquery编写,脚本代码较为复杂: 若需要实现倾斜.旋转之类的动画难度将更高(我还没试过用JavaScript或Jque ...

  5. opengl 如何加阴影_OpenGL + Qt: 3 - 旋转动画和键盘操纵

    前三篇链接: OpenGL + Qt: 0 - 三角形绘制 OpenGL + Qt: 1 - 用下拉框选颜色 OpenGL + Qt: 2 - 走向3D,画正四面体 这一周笔者经历了漫长的洲际飞行和昏 ...

  6. android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件

    简介 灵感源自360手机卫,主要功能就是实现显示评分或等级的效果.并稍微改良了一下,有更好的实用性和扩展性. 因为主要用途就是显示"分数","评价",所以暂且叫 ...

  7. html 星空效果,html5 canvas炫酷旋转银河系星空背景特效

    这是一款html5 canvas炫酷旋转银河系星空背景特效.该特效通过canvas来绘制银河系星盘,并制作星系旋转的效果,非常炫酷. 使用方法 HTML结构 该旋转银河系星空背景特效的HTML结果只需 ...

  8. qt 旋转后的三维坐标_OpenGL + Qt: 3 - 旋转动画和键盘操纵

    前三篇链接: 这一周笔者经历了漫长的洲际飞行和昏天黑地的倒时差,所以本篇内容相对少一些,侧重 Qt 而不是 OpenGL.在上一篇中,我们绘制了一个正四面体,然而正四面体的一个特点是无论你从哪个角度看 ...

  9. Silverlight Blend动画设计系列二:旋转动画(RotateTransform)

    原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform) Silverlight的基础动画包括偏移.旋转.缩放.倾斜和翻转动画,这些基础动画毫无疑 ...

最新文章

  1. Go 语言编程 — defer 关键字
  2. windows server 2008 系列讲座三部曲--在线讲座预告
  3. ubuntu-11.10-server-i386学习笔记-SVN版本服务器安装
  4. ICMP:Internet控制报文协议
  5. 【java笔记】线程间通信(1):等待唤醒机制
  6. Openvswtich 学习笔记
  7. 【每日算法Day 106】打家劫舍系列最后一弹,撑住你就赢了!
  8. c语言单片机程序设计例,单片机 C语言 程序设计100例
  9. 如何在windows2008/2012上安装启明星系统。
  10. amd编码器 hevc_Bandicam支持Nvidia NVENC编码器(H264, HEVC) - Bandicam(班迪录屏)
  11. Unity IOS设备陀螺仪控制相机旋转
  12. PSNR、SSIM、BD-rate和BD-PSNR
  13. 【云原生】在 React Native 中使用 AWS Textract 实现文本提取
  14. 微信小程序学习(五)
  15. 开源框架面试之MyBatis面试题
  16. Windows上安装Linux
  17. html插入图标img i png
  18. 访问一个网页的全过程(根据7层协议分析)
  19. 机械原理第二章 连杆机构总结
  20. bzoj1925 [Sdoi2010] 地精部落

热门文章

  1. P2P通信基本原理与实现
  2. 【智能决策引擎】规则引擎介绍
  3. 不用中间变量实现strlen函数
  4. 全国农村调查数据(1986-2015年)
  5. Hive 中的复合数据结构简介以及一些函数的用法说明
  6. python解析xml存入字典_Python将XML同级放入字典
  7. 火箭弹外弹道计算程序_火箭和应用程序容器规范
  8. QUTOJ 1218: 核电站问题 递推
  9. 北邮信通院C++实验课上机考试
  10. 当下的力量 读书笔记