<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
    }
  }
);