github.com/atsaki/terraform@v0.4.3-0.20150919165407-25bba5967654/website/source/assets/javascripts/app/Engine.Particle.Fixed.js (about) 1 (function( 2 Particle, 3 Engine, 4 Vector 5 ){ 6 7 Particle.Fixed = function(width, height){ 8 var targetX, targetY; 9 10 this.radius = Engine.getRandomFloat(0.1, 1); 11 // this.fillA = 'rgba(136,67,237,' + Engine.getRandomFloat(0.4, 0.5) + ')'; 12 // this.fillB = 'rgba(136,67,237,' + Engine.getRandomFloat(0.51, 0.6) + ')'; 13 this.fillA = '#3a1066'; 14 this.fillB = '#561799'; 15 this.frameMax = Engine.getRandomInt(4, 10); 16 17 this.max = { 18 x: width + this.maxRadius, 19 y: height + this.maxRadius 20 }; 21 22 this.min = { 23 x: 0 - this.maxRadius, 24 y: 0 - this.maxRadius 25 }; 26 27 targetX = Engine.getRandomInt(0 + this.radius, width + this.radius); 28 targetY = Engine.getRandomInt(0 + this.radius, height + this.radius); 29 30 this.pos = new Vector(targetX, targetY); 31 }; 32 33 Engine.Particle.Fixed.prototype = { 34 35 radius: 1, 36 37 pos: { 38 x: 0, 39 y: 0 40 }, 41 42 frame: 0, 43 showA: false, 44 45 update: function(engine){ 46 this.frame++; 47 if (this.frame > this.frameMax) { 48 this.frame = 0; 49 this.showA = !this.showA; 50 } 51 return this; 52 }, 53 54 draw: function(ctx, scale){ 55 // Draw a circle - far less performant 56 ctx.beginPath(); 57 ctx.arc( 58 this.pos.x * scale >> 0, 59 this.pos.y * scale >> 0, 60 this.radius * scale, 61 0, 62 Math.PI * 2, 63 false 64 ); 65 if (this.showA) { 66 ctx.fillStyle = this.fillA; 67 } else { 68 ctx.fillStyle = this.fillB; 69 } 70 ctx.fill(); 71 72 return this; 73 } 74 75 }; 76 77 })(window.Engine.Particle, window.Engine, window.Vector);