JavaScript canvas实现旋转动画

本文主要为大家详细介绍了javascript canvas实现围绕旋转动画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

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

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

html文件

nbsp;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文件

立即学习“Java免费学习笔记(深入)”;

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

登录后复制

效果图片:

JavaScript canvas实现旋转动画

相关推荐:

纯css3实现3D图片立方体旋转动画特效

HTML5/CSS3 3D立方体旋转动画经典案例

css旋转动画效果的简单实现示例详解

以上就是JavaScript canvas实现旋转动画的详细内容,更多请关注【创想鸟】其它相关文章!

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

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

(0)
上一篇 2025年3月8日 19:02:15
下一篇 2025年3月8日 19:02:25

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

相关推荐

  • JavaScript HTML时钟效果简单实现方法

    本文主要为大家详细介绍了五步轻松实现javascript html时钟效果的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 学了一段时间的HTML、CSS和JS后,给大家做一款漂亮的不像实力派的HTML时钟,先看…

    2025年3月8日
    200
  • Vue.js在数组中插入重复数据详解

    本文主要介绍了vue.js在数组中插入重复数据的实现代码,需要的朋友可以参考下,希望能帮助到大家。 1、在默认的情况下,Vue.js默认不支持往数组中加入重复的数据。可以使用track-by=”$index”来实现。…

    2025年3月8日
    200
  • node.js基于FFMPEG视频推流测试详解

    本文主要介绍了详解nodejs基于ffmpeg视频推流测试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 以ffmpeg为核心,包装一款局域网内接收转码并推送互联网的客户端软件。本文仅使用f…

    编程技术 2025年3月8日
    200
  • 为什么不使用 JS 匿名函数

    本文主要给大家分析了不使用js匿名函数的三大理由,匿名函数的作用是避免全局变量的污染以及函数名的冲突,关于js匿名函数的三大理由大家参考下本文,希望能帮助到大家。 匿名函数的基本形式为(function(){…})(); 前面的…

    编程技术 2025年3月8日
    200
  • Vue.js 组件中的v-on绑定自定义事件

    本文主要介绍了浅谈vue.js 组件中的v-on绑定自定义事件理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 每个 Vue 实例都实现了事件接口(Events interface),即:…

    2025年3月8日
    200
  • js毫秒如何转时分秒

    本文主要为大家分享一篇js 毫秒转天时分秒的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 实例如下所示: formatDuring: function(mss) { var days = pars…

    编程技术 2025年3月8日
    200
  • Vue.js与 ASP.NET Core 服务端渲染功能

    在前端使用 vue.js,vue 服务端渲染直到第二个版本才被支持。 在本例中,我想展示如何将 vue.js  服务端渲染功能整合 asp.net core。 我们在服务端使用了 microsoft.aspnetcore.spaservic…

    2025年3月8日
    200
  • threeJS实现星空粒子移动效果实例分享

    本文主要为和家详细介绍了使用3d引擎threejs实现星空粒子移动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 three.js是JavaScript编写的WebGL第三方库。提供了非常多的3D显示功能。Thr…

    2025年3月8日
    200
  • vue.js项目打包上线的图文讲解

    本文主要为大家分享一篇vue.js项目打包上线的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 最近一直坚持每个月写一个小的vue.js 开发的项目,最后开发完成后想到很久之前给别人回答的一个问…

    2025年3月8日
    200
  • Three.js基础入门学习教程

    本文主要为大家详细介绍了three.js基础学习教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 一、Three.js官网及使用Three.js必备的三个条件 1.Three.js 官网 https://three…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论