CreateJS奥运五环动画
来源:互联网 发布:java 缺省值 编辑:程序博客网 时间:2024/04/29 18:59
索契奥运会结束了,今天给大家看一个利用CreateJS实现的奥运五环动画,在线把玩请点这里,下载收藏请戳这里。
html文件非常简单,仅仅是弄了个canvas
<canvas id="world"></canvas>没有用到CSS,JS文件如下,在这个效果里面五环我们需要两个类,环类和粒子类。这里用到了CreateJS里面的easeljs。我们需要导入这个文件。
http://code.createjs.com/easeljs-0.7.1.min.js
/*----------------------------------- 变量-----------------------------------*/var cj = createjs, stage, particles = [], centerX, centerY, particleNum = window.innerWidth / 6, color = ["blue","black","red","yellow","green"]; speed = Math.PI / 60, RADIUS = window.innerWidth / 10, //圆的半径 margin = RADIUS / 10; SPEED_MIN = RADIUS / 2, SPEED_MAX = RADIUS;/*----------------------------------- 初始化-----------------------------------*/function init(){ var rotateCenterX, rotateCenterY, circle, radius = RADIUS; //生成舞台 stage = new cj.Stage("world"); stage.canvas.width = window.innerWidth; stage.canvas.height = window.innerHeight; for(var i = 1;i <= 3;i++){ circle = new Circle(i,1,radius,color[i - 1]); circle.create(); } circle = new Circle(1,2,radius,color[3]); circle.create(); circle = new Circle(2,2,radius,color[4]); circle.create(); //渲染到舞台 stage.update();}cj.Ticker.timingMode = cj.Ticker.RAF;cj.Ticker.addEventListener("tick",tick);/*----------------------------------- 自動更新-----------------------------------*/function tick(){ for(var i = 0;i < particles.length;i++){ var particle = particles[i]; particle.move(); } //渲染到舞台 stage.update();}/*----------------------------------- 粒子构造方法-----------------------------------*/function Particle(cx,cy,_angle,_radius,_color){ this.initialize(); //半径 this.radius = getRandomNum(5,10); getColor(this,_color); this.graphics.drawCircle(0,0,getRandomNum(1,10)) .endFill(); //中心位置 this.centerX = cx; this.centerY = cy; //角度 this.angle = _angle; //角速度 if(getRandomNum(1,10) % 2 == 0){ this.speed = Math.PI / (getRandomNum(SPEED_MIN,SPEED_MAX)); }else{ this.speed = - Math.PI / (getRandomNum(SPEED_MIN,SPEED_MAX)); } this.rotateCenterX = cx + _radius; this.rotateCenterY = cy; this.compositeOperation = "darker"; }//継承Particle.prototype = new cj.Shape();/*----------------------------------- 粒子移动位置-----------------------------------*/Particle.prototype.move = function(){ this.angle += this.speed; this.rotateCenterX = this.centerX + (RADIUS - margin) * Math.cos(this.angle / 5); this.rotateCenterY = this.centerY + (RADIUS - margin) * Math.sin(this.angle / 5); this.x = this.rotateCenterX + this.radius * Math.cos(this.angle / 360) * Math.cos(this.angle); this.y = this.rotateCenterY + this.radius * Math.sin(this.angle / 360) * Math.sin(this.angle);};/*----------------------------------- 环类构造方法-----------------------------------*/function Circle(cx,cy,r,_color){ if(cy == 1){//上段 this.centerX = r + 2 * r * (cx - 1) + ((window.innerWidth / 2) - 3 * r); this.centerY = r * cy + ((window.innerHeight / 2) - 1.5 * r); }else{//下段 this.centerX = r + 2 * r * (cx - 1) + r + ((window.innerWidth / 2) - 3 * r); this.centerY = r * cy + ((window.innerHeight / 2) - 1.5 * r); } this.radius = r; this.color = _color;}/*----------------------------------- 环类的生成方法-----------------------------------*/Circle.prototype.create = function(){ var rotateCenterX = this.centerX + this.radius, rotateCenterY = this.centerY; for(var j = 1;j < particleNum;j++){ var angle = j * 15 * 10; var particle = new Particle(this.centerX,this.centerY,angle,this.radius,this.color); particles.push(particle); stage.addChild(particle); }};/*----------------------------------- 取得随机数-----------------------------------*/function getRandomNum( min, max ) { return ( Math.random() * ( max - min ) + min ) | 0;}/*----------------------------------- 取得颜色-----------------------------------*/function getColor(obj,_color){ var fillColor; switch(_color){ case "blue": switch((Math.random() * 5 | 0 ) % 5){ case 0: fillColor = obj.graphics.beginFill("#0B5FA5"); break; case 1: fillColor = obj.graphics.beginFill("#25547B"); break; case 2: fillColor = obj.graphics.beginFill("#043C6B"); break; case 3: fillColor = obj.graphics.beginFill("#3F8FD2"); break; case 4: fillColor = obj.graphics.beginFill("#66A1D2"); break; default: break; } break; case "black": switch((Math.random() * 5 | 0 ) % 5){ case 0: fillColor = obj.graphics.beginFill("#000"); break; case 1: fillColor = obj.graphics.beginFill("#111"); break; case 2: fillColor = obj.graphics.beginFill("#191919"); break; case 3: fillColor = obj.graphics.beginFill("#2a2a2a"); break; case 4: fillColor = obj.graphics.beginFill("#3b3b3b"); break; default: break; } break; case "red": switch((Math.random() * 5 | 0 ) % 5){ case 0: fillColor = obj.graphics.beginFill("#FF0000"); break; case 1: fillColor = obj.graphics.beginFill("#BF3030"); break; case 2: fillColor = obj.graphics.beginFill("#A60000"); break; case 3: fillColor = obj.graphics.beginFill("#FF4040"); break; case 4: fillColor = obj.graphics.beginFill("FF7373"); break; default: break; } break; case "yellow": switch((Math.random() * 5 | 0 ) % 5){ case 0: fillColor = obj.graphics.beginFill("#FFF500"); break; case 1: fillColor = obj.graphics.beginFill("#BFBA30"); break; case 2: fillColor = obj.graphics.beginFill("#A69F00"); break; case 3: fillColor = obj.graphics.beginFill("#FFF840"); break; case 4: fillColor = obj.graphics.beginFill("#FFFA73"); break; default: break; } break; case "green": switch((Math.random() * 5 | 0 ) % 5){ case 0: fillColor = obj.graphics.beginFill("#25D500"); break; case 1: fillColor = obj.graphics.beginFill("#3DA028"); break; case 2: fillColor = obj.graphics.beginFill("#188A00"); break; case 3: fillColor = obj.graphics.beginFill("#59EA3A"); break; case 4: fillColor = obj.graphics.beginFill("#80EA69"); break; default: break; } break; default: break; } return fillColor;}init();好的,大家可以仔细研读,最好在理清思路之后自行实现一下。
当然,大家也可以看看本博客的另一篇文章《SVG奥林匹克五环动画》,或是看看codepen上的另一个效果。
---------------------------------------------------------------
前端开发whqet,关注web前端开发技术,分享网页相关资源。
---------------------------------------------------------------
7 0
- CreateJS奥运五环动画
- CreateJS奥运五环动画
- CreateJS 动画
- 奥运五环
- 奥运五环
- 制作奥运五环
- 奥运五环
- windows 程序设计 奥运五环
- Html5制作奥运五环
- canvas画奥运五环
- CreateJS 学习4 动画、TweenJS
- CSS3绘制的奥运五环
- 用Applet画一个奥运五环
- Matlab 关于奥运五环的制作
- 生成奥运五环的matlab代码
- 【MATLAB】用MATLAB绘制奥运五环
- 利用Graphics画奥运五环
- python绘图等边三角形,五角星,奥运五环
- String系列——StringBuilder & StringBuffer关键源码解析
- memset()函数用法浅析----笛风读书笔记系列
- Flex socket 安全策略 请求
- POJ 2349 Arctic Network(最小生成树)
- 二维数组的五种指针表示及指针数组
- CreateJS奥运五环动画
- C++内存池的实现
- 斐波那契数列
- uva 10020 - Minimal coverage
- mysql全文索引笔记1
- explicit 关键字
- 通配符与正则表达式区别(一)
- ios学习之 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- 2014,新起点