|
|
(14 intermediate revisions by the same user not shown) |
Line 532: |
Line 532: |
| color: #ffffff; | | color: #ffffff; |
| } | | } |
| + | |
| + | |
| + | /****************SMOKE CANVAS***************************/ |
| + | canvas { |
| + | position:absolute; |
| + | margin-left : 50%; |
| + | left: -200px; |
| + | overflow: hidden; |
| + | |
| + | } |
| + | |
| + | #smoke{display:none;} |
| + | |
| </style> | | </style> |
| | | |
Line 620: |
Line 633: |
| | | |
| | | |
| + | <!-- This is the HTML code for smoke--> |
| + | <canvas id="smoke-canvas"></canvas> |
| + | <img id="smoke" src="https://static.igem.org/mediawiki/2016/9/96/T--Peshawar--smoke.png"/> |
| | | |
− | <canvas id="canvas"></canvas>
| |
− | <img src="data:image/png;base64,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"/>
| |
| | | |
| + | </div> |
| + | <!-- This is the end div tag of the sidebar--> |
| | | |
− |
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | </div>
| |
| | | |
| | | |
Line 642: |
Line 652: |
| | | |
| | | |
− | | + | <!-- Start of StatCounter Code for Default Guide and its HTML --> |
| + | <script type="text/javascript"> |
| + | var sc_project=11100754; |
| + | var sc_invisible=1; |
| + | var sc_security="135c4f8d"; |
| + | var scJsHost = (("https:" == document.location.protocol) ? |
| + | "https://secure." : "http://www."); |
| + | document.write("<sc"+"ript type='text/javascript' src='" + |
| + | scJsHost+ |
| + | "statcounter.com/counter/counter.js'></"+"script>"); |
| + | </script> |
| + | <noscript><div class="statcounter"><a title="shopify stats" |
| + | href="http://statcounter.com/shopify/" target="_blank"><img |
| + | class="statcounter" |
| + | src="//c.statcounter.com/11100754/0/135c4f8d/1/" |
| + | alt="shopify stats"></a></div></noscript> |
| + | <!-- End of StatCounter Code for Default Guide --> |
| | | |
| | | |
Line 724: |
Line 750: |
| "https://static.igem.org/mediawiki/2016/b/b8/T--Peshawar--sarah-2.jpg", | | "https://static.igem.org/mediawiki/2016/b/b8/T--Peshawar--sarah-2.jpg", |
| "https://static.igem.org/mediawiki/2016/1/17/T--Peshawar--sidra-2.jpg"); | | "https://static.igem.org/mediawiki/2016/1/17/T--Peshawar--sidra-2.jpg"); |
− | </script>
| |
| | | |
| | | |
− | <!-- Start of StatCounter Code for Default Guide -->
| + | //********************SMOKE CANVAS JS************************** |
− | <script type="text/javascript">
| + | |
− | var sc_project=11100754;
| + | |
− | var sc_invisible=1;
| + | |
− | var sc_security="135c4f8d";
| + | |
− | var scJsHost = (("https:" == document.location.protocol) ?
| + | |
− | "https://secure." : "http://www.");
| + | |
− | document.write("<sc"+"ript type='text/javascript' src='" +
| + | |
− | scJsHost+
| + | |
− | "statcounter.com/counter/counter.js'></"+"script>");
| + | |
− | </script>
| + | |
− | <noscript><div class="statcounter"><a title="shopify stats"
| + | |
− | href="http://statcounter.com/shopify/" target="_blank"><img
| + | |
− | class="statcounter"
| + | |
− | src="//c.statcounter.com/11100754/0/135c4f8d/1/"
| + | |
− | alt="shopify stats"></a></div></noscript>
| + | |
− | <!-- End of StatCounter Code for Default Guide -->
| + | |
| | | |
| + | (function () { |
| + | var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; |
| + | window.requestAnimationFrame = requestAnimationFrame; |
| + | })(); |
| | | |
| + | var canvas = document.getElementById("smoke-canvas"), |
| + | ctx = canvas.getContext("2d"), |
| + | settings = { |
| + | color: { |
| + | r: 255, |
| + | g: 255, |
| + | b: 255 |
| + | } |
| + | }, |
| + | loading = true; |
| + | |
| + | canvas.height = document.body.offsetHeight; |
| + | canvas.width = 300; |
| + | |
| + | var parts = [], |
| + | minSpawnTime = 40, |
| + | lastTime = new Date().getTime(), |
| + | maxLifeTime = Math.min(5000, (canvas.height / (1.5 * 60) * 1000)), |
| + | emitterX = canvas.width / 2, |
| + | emitterY = canvas.height - 10, |
| + | smokeImage = new Image(); |
| + | |
| + | function spawn() { |
| + | if (new Date().getTime() > lastTime + minSpawnTime) { |
| + | lastTime = new Date().getTime(); |
| + | parts.push(new smoke(emitterX, emitterY)); |
| + | } |
| + | } |
| + | |
| + | function render() { |
| + | if(loading){ |
| + | load(); |
| + | return false; |
| + | } |
| + | |
| + | var len = parts.length; |
| + | ctx.clearRect(0, 0, canvas.width, canvas.height); |
| + | |
| + | while (len--) { |
| + | if (parts[len].y < 0 || parts[len].lifeTime > maxLifeTime) { |
| + | parts.splice(len, 1); |
| + | } else { |
| + | parts[len].update(); |
| + | |
| + | ctx.save(); |
| + | var offsetX = -parts[len].size / 2, |
| + | offsetY = -parts[len].size / 2; |
| + | |
| + | ctx.translate(parts[len].x - offsetX, parts[len].y - offsetY); |
| + | ctx.rotate(parts[len].angle / 180 * Math.PI); |
| + | ctx.globalAlpha = parts[len].alpha; |
| + | ctx.drawImage(smokeImage, offsetX, offsetY, parts[len].size, parts[len].size); |
| + | ctx.restore(); |
| + | } |
| + | } |
| + | spawn(); |
| + | requestAnimationFrame(render); |
| + | } |
| + | |
| + | function smoke(x, y, index) { |
| + | this.x = x; |
| + | this.y = y; |
| + | |
| + | this.size = 1; |
| + | this.startSize = 32; |
| + | this.endSize = 40; |
| + | |
| + | this.angle = Math.random() * 359; |
| + | |
| + | this.startLife = new Date().getTime(); |
| + | this.lifeTime = 0; |
| + | |
| + | this.velY = -1 - (Math.random() * 0.5); |
| + | this.velX = Math.floor(Math.random() * (-6) + 3) / 10; |
| + | } |
| + | |
| + | smoke.prototype.update = function () { |
| + | this.lifeTime = new Date().getTime() - this.startLife; |
| + | this.angle += 0.2; |
| + | |
| + | var lifePerc = ((this.lifeTime / maxLifeTime) * 100); |
| + | |
| + | this.size = this.startSize + ((this.endSize - this.startSize) * lifePerc * .1); |
| + | |
| + | this.alpha = 1 - (lifePerc * .01); |
| + | this.alpha = Math.max(this.alpha, 0); |
| + | |
| + | this.x += this.velX; |
| + | this.y += this.velY; |
| + | } |
| + | |
| + | smokeImage.src = document.getElementById("smoke").src; |
| + | smokeImage.onload = function(){ |
| + | loading = false; |
| + | } |
| + | |
| + | function load(){ |
| + | if(loading){ |
| + | setTimeout(load, 100); |
| + | }else{ |
| + | render(); |
| + | } |
| + | } |
| + | |
| + | render(); |
| + | |
| + | // save off the original image for colorizing |
| + | var origImage = smokeImage; |
| + | |
| + | window.onresize = resizeMe; |
| + | window.onload = resizeMe; |
| + | |
| + | function resizeMe() { |
| + | canvas.height = document.body.offsetHeight; |
| + | } |
| + | |
| + | function changeColor() { |
| + | var tCanvas = document.createElement("canvas"), |
| + | tCtx = tCanvas.getContext("2d"), |
| + | color = settings.color; |
| + | |
| + | tCanvas.width = tCanvas.height = 32; |
| + | tCtx.drawImage(origImage, 0, 0, 32, 32); |
| + | |
| + | var imgd = tCtx.getImageData(0, 0, 32, 32), |
| + | pix = imgd.data; |
| + | |
| + | for (var i = 0, n = pix.length; i < n; i += 4) { |
| + | pix[i] = color.r |
| + | pix[i + 1] = color.g; |
| + | pix[i + 2] = color.b; |
| + | } |
| + | |
| + | tCtx.putImageData(imgd, 0, 0); |
| + | return tCanvas.toDataURL(); |
| + | } |
| + | |
| + | // Settings |
| + | var gui = new dat.GUI(); |
| + | var colorController = gui.addColor(settings, 'color').onChange(function () { |
| + | smokeImage.src = changeColor(); |
| + | }); |
| + | |
| + | |
| + | </script> |
| </html> | | </html> |