JS+canvas做出围绕旋转动画

这次给大家带来JS+canvas做出围绕旋转动画,JS+canvas做出围绕旋转动画的注意事项有哪些,下面就是实战案例,一起来看一下。

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

html文件

           body {    margin: 0;    padding: 0;    overflow: hidden;    background-color: #f0f0f0;   }         

var width = window.innerWidth; var height = window.innerHeight; //创建舞台 var stage = new Konva.Stage({ container: "cas", width: width, height: height }); //创建层 var layer = new Konva.Layer(); //创建组1 var 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); //***************************************************** //创建组2 var 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); //*********************************************** //创建组3 var 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; });

登录后复制

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);  } }

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

实现完整的Angular4 FormText组件需要哪些步奏

在Angular中怎么支持SCSS

以上就是JS+canvas做出围绕旋转动画的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2772256.html

(0)
上一篇 2025年3月8日 13:12:44
下一篇 2025年3月8日 13:12:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • js的作用域使用详解

    这次给大家带来js的作用域使用详解,js作用域使用的注意事项有哪些,下面就是实战案例,一起来看一下。 JavaScript是现在很多人都在使用的,对于JavaScript的使用,可能很多人还不是很清楚作用域以及块级作用域,这里文章就给大家具…

    编程技术 2025年3月8日
    200
  • 如何在java程序中运行js的代码分享

    本篇文章给大家分享的内容是如何在java程序中运行js的代码分享,有着一定的参考价值,有需要的朋友可以参考一下 1.6版本中增加了scriptengine可以直接运行js代码 1、直接写js代码 import javax.script.Sc…

    编程技术 2025年3月8日
    200
  • JS+HTML做出时钟动画

    这次给大家带来JS+HTML做出时钟动画,JS+HTML做出时钟动画的注意事项有哪些,下面就是实战案例,一起来看一下。 涉及到的知识点有: CSS3动画、DOM操作、定时器、圆点坐标的计算(好多人是不是已经还给自己的老师了~) 接下来,我们…

    编程技术 2025年3月8日
    200
  • vue.js操作数组数据的方法

    这次给大家带来vue.js操作数组数据的方法,vue.js操作数组数据的注意事项有哪些,下面就是实战案例,一起来看一下。 1、在默认的情况下,Vue.js默认不支持往数组中加入重复的数据。可以使用track-by=”$index…

    编程技术 2025年3月8日
    200
  • nodejs基于ffmpeg进行视频推流直播

    这次给大家带来nodejs基于ffmpeg进行视频推流直播,nodejs基于ffmpeg进行视频推流直播的注意事项有哪些,下面就是实战案例,一起来看一下。 以ffmpeg为核心,包装一款局域网内接收转码并推送互联网的客户端软件。本文仅使用f…

    编程技术 2025年3月8日
    200
  • JS匿名函数应该怎样使用

    这次给大家带来JS匿名函数应该怎样使用,使用JS匿名函数的注意事项有哪些,下面就是实战案例,一起来看一下。 匿名函数的基本形式为(function(){…})(); 前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执…

    编程技术 2025年3月8日
    200
  • 如何用js代码绘制一棵树

    本篇文章给大家分享的内容是如何用js代码绘制一棵树 ,有着一定的参考价值,有需要的朋友可以参考一下 第一步新建html文档:         /*设置body样式*/ body{ overflow:hidden; background: b…

    2025年3月8日
    200
  • Vue.js中v-on事件使用详解

    这次给大家带来Vue.js中v-on事件使用详解,Vue.js中v-on事件使用的注意事项有哪些,下面就是实战案例,一起来看一下。 每个 Vue 实例都实现了事件接口(Events interface),即: 使用 $on(eventNam…

    编程技术 2025年3月8日
    200
  • nodejs async异步需要哪些函数

    这次给大家带来nodejs async异步需要哪些函数,nodejs async异步使用函数的使用函数有哪些,下面就是实战案例,一起来看一下。 nodejs框架使用函数很多,“使用函数”本来是件比较简单的事,但是对于nodejs的异步架构的…

    编程技术 2025年3月8日
    200
  • JS去除数组中重复项的方法

    这次给大家带来JS去除数组中重复项的方法,JS去除数组中重复项的注意事项有哪些,下面就是实战案例,一起来看一下。 数组去重的方法有很多,不同的方法的效率也不相同。如前面文章JS实现的数组去除重复数据算法小结中就总结分析了4种实现方法。这里介…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论