最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript canvas實現(xiàn)圍繞旋轉(zhuǎn)動畫

 更新時間:2017年11月18日 09:16:00   作者:安靜的對折  
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實現(xiàn)圍繞旋轉(zhuǎn)動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下

使用canvas的convas來實現(xiàn)圍繞旋轉(zhuǎn)動畫,外圈順時針,里層逆時針

代碼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; 
 //創(chuàng)建舞臺 
 var stage = new Konva.Stage({ 
  container: "cas", 
  width: width, 
  height: height 
 }); 
 //創(chuàng)建層 
 var layer = new Konva.Layer(); 
 //創(chuàng)建組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); 
 //***************************************************** 
 //創(chuàng)建組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軸的坐標(biāo) 
   y : 250 * Math.sin(72 * i * Math.PI / 180), //圓心y軸的坐標(biāo) 
   outR : 60, //外圓的半徑 
   inR : 50, //內(nèi)圓的半徑 
   fill : arrColor[i], //填充顏色 
   text: arrText[i], //文字 
   outOpacity : 0.3, //外圓的透明度 
   inOpacity : 0.6  //內(nèi)圓的透明度 
  }); 
  cir.drawCircle(outGroup); 
 } 
 layer.add(outGroup); 
 
 //*********************************************** 
 //創(chuàng)建組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軸的坐標(biāo) 
   y : 135 * Math.sin(90 * i * Math.PI / 180), //圓心y軸的坐標(biāo) 
   outR : 45, //外圓的半徑 
   inR : 35, //內(nèi)圓的半徑 
   fill : arrColor[i], //填充顏色 
   text: arrText[i], //文字 
   outOpacity : 0.3, //外圓的透明度 
   inOpacity : 0.6  //內(nèi)圓的透明度 
  }); 
  cir.drawCircle(inGroup); 
 } 
 layer.add(inGroup); 
 
 //************************************************ 
 //運動動畫 
 var step = 1; //轉(zhuǎn)動的角度 
 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軸的坐標(biāo) 
  this.y = obj.y, //圓心y軸的坐標(biāo) 
  this.outR = obj.outR, //外圓的半徑 
  this.inR = obj.inR, //內(nèi)圓的半徑 
  this.color = obj.fill, //填充顏色 
  this.text = obj.text, //內(nèi)圓的文字 
  this.outOpacity = obj.outOpacity, //外圓的透明度 
  this.inOpacity = obj.inOpacity  //內(nèi)圓的透明度 
 }, 
 drawCircle: function (group) { 
  //創(chuàng)建一個組 
  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); 
  //內(nèi)圓 
  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); 
 } 
} 

效果圖片:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ES6基礎(chǔ)之展開語法(Spread syntax)

    ES6基礎(chǔ)之展開語法(Spread syntax)

    這篇文章主要介紹了ES6基礎(chǔ)之展開語法(Spread syntax),主要介紹了擴展語法的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 教你用Uniapp實現(xiàn)微信小程序的GPS定位打卡

    教你用Uniapp實現(xiàn)微信小程序的GPS定位打卡

    地圖組件用于展示地圖,而定位API只是獲取坐標(biāo),請勿混淆兩者,下面這篇文章主要給大家介紹了關(guān)于如何使用Uniapp實現(xiàn)微信小程序的GPS定位打卡的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 解析瀑布流布局:JS+絕對定位的實現(xiàn)

    解析瀑布流布局:JS+絕對定位的實現(xiàn)

    本篇文章是對瀑布流局部的實現(xiàn)進行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • uniapp使用u-upload組件來實現(xiàn)圖片上傳功能

    uniapp使用u-upload組件來實現(xiàn)圖片上傳功能

    最近在用uniapp開發(fā)微信小程序,下面這篇文章主要給大家介紹了關(guān)于uniapp使用u-upload組件來實現(xiàn)圖片上傳功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • JavaScript中詭異的delete操作符

    JavaScript中詭異的delete操作符

    這篇文章主要介紹了JavaScript中詭異的delete操作符,本文講解了刪除對象的屬性、對數(shù)組的操作、對于變量的操作等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • IE6-8中Date不支持toISOString的修復(fù)方法

    IE6-8中Date不支持toISOString的修復(fù)方法

    這篇文章主要介紹了IE6-8中Date不支持toISOString的修復(fù)方法,需要的朋友可以參考下
    2014-05-05
  • js禁止瀏覽器的回退事件

    js禁止瀏覽器的回退事件

    這篇文章主要為大家詳細(xì)介紹了js禁止瀏覽器的回退事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 基于JavaScript實現(xiàn)選項卡效果

    基于JavaScript實現(xiàn)選項卡效果

    這篇文章主要為大家詳細(xì)介紹了基于JavaScript實現(xiàn)選項卡效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • JavaScript中的數(shù)學(xué)運算介紹

    JavaScript中的數(shù)學(xué)運算介紹

    這篇文章主要介紹了JavaScript中的數(shù)學(xué)運算介紹,本文先是講解了數(shù)學(xué)運算的一些知識,然后給出了操作實例,需要的朋友可以參考下
    2014-12-12
  • three.js中3D視野的縮放實現(xiàn)代碼

    three.js中3D視野的縮放實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了three.js中3D視野的縮放實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論

河西区| 孝义市| 曲沃县| 普洱| 读书| 新民市| 福安市| 射阳县| 新龙县| 措美县| 新营市| 四子王旗| 佛学| 宜宾县| 东明县| 施秉县| 遂平县| 昆山市| 建湖县| 吴旗县| 青铜峡市| 夹江县| 即墨市| 黄大仙区| 崇义县| 商城县| 化隆| 蓝田县| 长汀县| 垣曲县| 漳浦县| 泗水县| 永德县| 迁西县| 宕昌县| 黑龙江省| 来宾市| 清远市| 佛山市| 滁州市| 扶绥县|