<canvas id="stage"></canvas>
* { margin: 0; padding: 0; } body { background: #000; }
(function(window) { var Particle = function(imagePaths, config, type, useParticleContainer, stepColors) { var canvas = document.getElementById('stage'); var rendererOptions = { view: canvas, }; var stage = new PIXI.Container(); var emitter = null; var renderer = PIXI.autoDetectRenderer(canvas.width, canvas.height, rendererOptions); var elapsed = Date.now(); var updateId; var update = function() { updateId = requestAnimationFrame(update); var now = Date.now(); if (emitter) { emitter.update((now - elapsed) * 0.001); } elapsed = now; renderer.render(stage); }; window.onresize = function(event) { canvas.width = window.innerWidth; canvas.height = window.innerHeight; renderer.resize(canvas.width, canvas.height); }; window.onresize(); var urls = imagePaths.slice(); var loader = PIXI.loader; loader.load(function() { var art = []; var emitterContainer; for (var i = 0; i < imagePaths.length; ++i) { art.push(PIXI.Texture.fromImage(imagePaths[i])); } if (useParticleContainer) { emitterContainer = new PIXI.ParticleContainer(); emitterContainer.setProperties({ scale: true, position: true, rotation: true, uvs: true, alpha: true }); } else emitterContainer = new PIXI.Container(); stage.addChild(emitterContainer); window.emitter = emitter = new PIXI.particles.Emitter( emitterContainer, art, config ); emitter.updateOwnerPos(window.innerWidth / 2, window.innerHeight / 2); canvas.addEventListener('click', function(e) { if (!emitter) return; emitter.emit = true; emitter.resetPositionTracking(); emitter.updateOwnerPos(e.offsetX || e.layerX, e.offsetY || e.layerY); }); update(); }); }; window.Particle = Particle; }(window)); new Particle( ['p.png'], { "alpha": { "start": 0.8, "end": 0.1 }, "scale": { "start": 1, "end": 0.3 }, "color": { "start": "fb1010", "end": "f5b830" }, "speed": { "start": 200, "end": 100 }, "startRotation": { "min": 0, "max": 360 }, "rotationSpeed": { "min": 0, "max": 0 }, "lifetime": { "min": 0.5, "max": 0.5 }, "frequency": 0.008, "emitterLifetime": 0.31, "maxParticles": 1000, "pos": { "x": 0, "y": 0 }, "addAtBack": false, "spawnType": "circle", "spawnCircle": { "x": 0, "y": 0, "r": 10 } } );