canvas实现立方体线条炫酷动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas实现立方体线条炫酷动画效果代码

代码标签: canvas 立方体 线条 炫酷 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
  
  
  
<style>
body {
    background-color: #000;
    margin: 0;
    overflow: hidden;
}

#container {
    position: absolute;
    left: 50%;
    top: 50%;
}

canvas {
    position: absolute;
    background-color: rgba(0,0,0,0.1);
}
</style>


  
</head>

<body translate="no">
  <div id="container"></div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/TweenMax.min.js"></script>
      <script >
var mContainer = document.getElementById('container');

var mXPlanes = [],
mYPlanes = [],
mZPlanes = [],
mAllPlanes = [];

var mTrails = [];

var mPlaneSize = 300,
mDivisions = 5,
mSegmentSize = mPlaneSize / mDivisions;

window.onload = function () {
  init();
  requestAnimationFrame(loop);
};

function init() {
  TweenMax.set(mContainer, {
    perspective: 4000,
    transformStyle: 'preserve-3d' });


  createPlanes();
  createTrails();

  TweenMax.to(mContainer, 20, { ease: Linear.easeNone, rotationX: 360, rotationY: 360, repeat: -1 });
}

function createPlanes() {
  var i,
  startOffset = mPlaneSize * -0.5;

  // x
  for (i = 0; i <= mDivisions; i++) {
    mXPlanes.push(createPlane(
    new Point(startOffset + mSegmentSize * i, 0, 0),
    new Point(0, -90, 0),
    "#00f"));

  }
  // y
  for (i = 0; i <= mDivisions; i++) {
    mYPlanes.push(createPlane(
    new Point(0, startOffset + mSegmentSize * i, 0),
    new Point(90, 0, 0),
    "#0f0"));

  }
  // z
  for (i = 0; i <= mDivisions; i++) {
    mZPlanes.push(createPlane(
    new Point(0, 0, startOffset + mSegmentSize * i),
    new Point(),
    "#f00"));

  }
}

function createPlane(p, r, c) {
  var plane = new Plane(p, r, c);

  mAllPlanes.push(plane);
  mContainer.appendChild(plane.canvas);

  return plane;
}

function createTrails() {
  var x, y, z, position,
  h, s, l, color;

  for (var i = 0; i < 8; i++) {
    x = randomRange(0, mDivisions) | 0;
    y = randomRange(0, mDivisions) | 0;
    z = randomRange(0, mDivisions) | 0;
    position = new Point(x, y, z);

    h = randomRange(0, 180) | 0;
    s = randomRange(80, 100) | 0;
    l = randomRange(80, 100) | 0;
    color = 'hsl(' + h + ',' + s + '%,' + l + '%)';

    startTrailsAt(position, color);
  }
}
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0