mokargas Posted July 21, 2016 Share Posted July 21, 2016 Hey all, I currently have a special custom particle sub class, called Powerup (Using ES6 and Phaser 2.6.1). It looks like the following, truncated for brevity export default class Powerup extends Phaser.Particle { constructor(game, state, position, key, value) { super(game, position.x, position.y, key); this.animations.add('anim', [0, 1, 2, 3, 4, 5], 24, true); this.animations.play('anim', true); } .. minor other functions .. } In this class I'm adding an animation above in the normal fashion, above. I then have a particle emitter subclass, called Spawner: import Powerup from '../objects/Powerup'; export default class Spawner extends Phaser.Particles.Arcade.Emitter { constructor(game, position, config) { console.log('Starting Spawner'); super(game, position.x, position.y, config.total); //Enable physics this.enableBody = config.collide || true; //Initial Position this.position = position; //Give some speed this.minParticleSpeed.set(0, 300); this.maxParticleSpeed.set(0, 400); //Create particles this.particleClass = Powerup; this.makeParticles(); } } When I add my particle emitter to the game with this.game.spawner = new Spawner(this.game, spawnerPosition, spawnerConfig); this.game.spawner.width = this.game.width; this.game.spawner.start(false); I get the following error:Uncaught TypeError: Cannot read property 'getFrameIndexes' of null Which traces back to this line in the Powerup class: this.animations.add('anim', [0, 1, 2, 3, 4, 5], 24, true); According to the Docs, this should work. I can't figure out why getFrameIndexes is null, when they are specified in the constructor for each Particle? Link to comment Share on other sites More sharing options...
mokargas Posted July 21, 2016 Author Share Posted July 21, 2016 I figured this out. It's because .makeParticles doesn't accept custom properties to your particle object. So one has to override makeParticles in the emitter subclass to do so, in my case that meant the key that links to the spritesheet asset wasn't passed. My use case was to have a standalone sprite-based powerup class, then have certain enemies "explode" in instances of that same powerup class e.g Like when sonic gets hit and his rings pop out of him. Link to comment Share on other sites More sharing options...
Recommended Posts